Кстати, а можно ли реализовать эту задачу с помощью абстрактных классов или итерфейсов, и будет ли так правильней?
Ну в этом виде её можно реализовать даже без наследования )) Не используйте средства языка просто потому что вы их знаете. Код (PHP): class repository { private $db; protected $table_name = ''; public function __construct($db, $table_name) { $this->db = $db; $this->table_name = $table_name; } public function get_all() { $res = $this->db->query("select * from $this->table_name"); $elems = $res->fetch_all(); $res->free(); return $elems; } } $db = new mysqli(HOST, USER, PASS, DB_NAME); $news = new repository($db, "news"); foreach ($news->get_all() as $news) var_export($news); Вы поймите, что объектное приложение нужно сначала спроектировать, а потом уже реализовывать. Вы вот реально сделайте сейчас простое упражнение, и выложите сюда. В одну колонку выпишите все существительные, относящиеся к вашей задаче. В другую колонку - что они должны уметь делать, или что с ними можно делать. В третью - кем инициируется действие (к примеру, пользователем, или одним из участников системы, записанных на первом шаге; что-то типа документ просит фигуру нарисовать себя). Вот после этого можно будет говорить о том, какие вам нужны классы, интерфейсы и т.п. Это, конечно, упрощённое проектирование, но для не сильно сложных задач таких вещей бывает достаточно.
Если я точно вас понял то вот: 1. Подключаться к БД, выбирать оттуда все, выводить. Вот и вся задача =)
Задача - это у вас. Я вам пример кода даю для того, что вы в первом посте пытались изобразить. Если для вас это вся задача, ну пользуйтесь....
А можно еще вопрос? Про то как правильно подключатся к БД в ООП стиле, гугл выдал очень много всего, и все способы очень разные, а как подключаться правильно?
С базой сейчас принято работать либо через mysqli, либо через PDO. Я люблю mysqli, хотя PDO в некотором роде мощнее. mysqli - в моём примере. PDO - читайте документацию
Про это то я знаю. Я хотел уточнить как работать с расширением mysqli в стиле ООП, слышал про какие-то обертки, но пока что подключаюсь как написано в документации (когда расширяем класс mysqli). А стоит ли использовать эти обертки?
Зависит от задачи. Мне хватает mysqli, единственное, я его иногда расширяю, чтоб при ошибках он автоматически логировал запросы - удобно отлаживать
стоит, если они добавляют удобства ) например: - в mysql/mysqli нет метода получить все строки разом в массив (в PDO есть такое). моя обертка предоставляет метод fetchAssocAll(). - хотя и в mysqli и в PDO есть плейхсхолдеры, они не позволяют, например, работать с "префиксом таблиц", т.е. когда часть имени задана в конфигурации приложения. я себе такое добавил …FROM `_users` AS u. - массивы для подстановки в …WHERE `id` INids) и т.д. кто-то типизованные плейсхолдеры делает — тоже здравый подход. ну и оболочка это новый уровень абстракции, чтобы можно было прозрачно выбирать расширение не переписывая весь код.
спасибо! Добавлено спустя 1 минуту 3 секунды: настораживает замечание: я, честно говоря, не хотел бы проверять используется nd или нет.