Как организовать классы в PHP и получить доступ к базе данных из класса - PullRequest
1 голос
/ 12 января 2012

Я программирую процедурный PHP около 8 лет, и наконец начинаю изучать ООПХП.Я прочитал много учебных пособий, понимаю синтаксис и чувствую себя вполне комфортно при его использовании.Однако я не смог найти практический пример настройки структуры файлов классов и доступа к моей базе данных из классов для выполнения запросов к ним.

Первоначально я хотел создатьотдельную папку с именем / class и создайте файл для каждого класса.если класс расширяет другой класс, я бы include() родительский файл в дочернем файле.в моих основных сценариях я бы назвал классы так, как они мне нужны.например, include(/class/member.php) когда мне понадобился их класс-член.

также я написал класс базы данных, который расширяет mysqli (я знаю, что многие из вас предложат вместо этого использовать PDO, и если у вас есть причины, почемуне стесняйтесь предлагать их, хотя я скажу, что никогда не буду использовать MySQL).То, что меня по-настоящему бросило, было то, как открыть соединение с базой данных в моих классах.Например, я думал, что в классе члена я должен передать member_id, а затем я выполню запрос в классе, чтобы установить все его свойства для свойства члена.Первоначально я включил класс базы данных в свой основной скрипт и создал его экземпляр, а затем объявил дескриптор как глобальный в своем классе-члене (я читал, как глобальные перемены являются злыми, и в любом случае мне не очень нравится это решение).Как лучше это сделать?

спасибо за любую помощь!

Ответы [ 2 ]

5 голосов
/ 12 января 2012

Во-первых, вы определенно на правильном пути с отдельным файлом для каждого класса.На данный момент это в значительной степени считается стандартной практикой.Я бы посмотрел в класс автозагрузки и spl_autoload_register.Во-первых, я настоятельно рекомендую настроить автозагрузчик, поверьте мне, когда я говорю, что вы действительно не хотите делать бесчисленные вызовы interface_exists и class_exists, прежде чем включать файлы классов.ваша база звонков.Я ответил на аналогичный вопрос здесь , но суть в том, что вы создаете один экземпляр базы данных и внедряете его в классы, которым требуется доступ к базе данных.Что касается mysqli, если это то, что вам нравится, используйте его.Замечательно, что вы не используете устаревшую устаревшую версию mysql_*.

5 голосов
/ 12 января 2012

На мой взгляд, лучший способ изучить ООП - это просмотреть уже существующие кодовые базы, которые следуют за ООП.Я бы предложил проверить Zend Framework API Docs .Если это выглядит многообещающе для вас, скачайте framework и начните с ним практиковаться.

Крутая вещь в Zend Framework заключается в том, что его можно использовать в качестве сверху вниз MVC или в качестве автономногобиблиотека, и широко используется в сообществе PHP.

Некоторые вещи, на которых следует сосредоточиться:

  • Автозагрузка классов
  • Как имена классов совпадают с соответствующими структурами каталогов
  • Как расширяются классы
  • Интерфейсы
  • Абстрактные классы
...