Здравствуйте. Осваиваю ООП и PDO. Есть трудности с выводом информации из БД. Никак не могу понять почему не работает это кусок кода: Код (Text): class Model { /** * DB connection function * @return PDO * @throws PDOException */ private function dbConnect() { $host = 'localhost'; $db_name = 'news'; $login = 'root'; $password = ''; try { $dbh = new PDO("mysql:host = $host; dbname = $db_name", $login, $password); if (empty($dbh)) throw new PDOException(); else return $dbh; } catch (PDOException $e) { echo 'Ошибка соединения с Базой Данных:' . $e->getMessage(); } } /** * This function return list of all articles from DB. * @return array */ public static function articles_all() { $pdo = Model::dbConnect(); $query = "SELECT * FROM `articles` ORDER BY `id_article` DESC"; $stmt = $pdo->prepare($query); $stmt->execute(); $articlesArray = $stmt->fetchAll(); return $articlesArray; } При вызове articles_all, не выдается список статей. Точнее он пустой, будто бы ни одной статьи нет, хотя это не так. Если подключение к базе данных реализовать в функции articles_all, то есть грубо закомментировать функцию dbConnect и весь код подключения к БД написать в функции articles_all, тогда все работает. Что я не так делаю?
Код (PHP): Model::dbConnect() === При попытке вызова нестатических методов статически выводится предупреждение уровня E_STRICT. http://www.php.ru/manual/language.oop5.static.html === кто-то перемудрил с ООП ? ))
Спасибо за помощь. Поправил на static public static function dbConnect() все равно не выводит список. Не пойму почему не отрабатывает, такое впечатление что $pdo = Model::dbConnect(); не отрабатывает. Добавлено спустя 27 минут 22 секунды: Похоже дело в return, в function dbConnect(). Не пойму как при помощи PDO реализовать подключение к MySQL. До этого использовал такуб функцию и вызывал где надо и все работало. Код (Text): function startup() { // Настройки подключения к БД. $hostname = 'localhost'; $username = 'root'; $password = ''; $dbName = 'news'; // Языковая настройка. setlocale(LC_ALL, 'ru_RU.CP1251'); // Подключение к БД. mysql_connect($hostname, $username, $password) or die('No connection with data base'); mysql_query('SET NAMES cp1251'); mysql_select_db($dbName) or die('No data base'); } Попробовал то же самое с помощью PDO реализовать, что-то пока не получилось. Я могу конечно добавить строчку $dbh = new PDO("mysql:host = $host; dbname = $db_name", $login, $password); в каждую функцию и все заработает, но мне кажется это неправильно. Объект что ли return возвратить не может?