#php #database #class #interface
#php #База данных #класс #интерфейс
Вопрос:
Обычно я храню объект PDO как элемент. Однако во время практического внедрения зависимостей у меня возникла проблема, из-за которой я не могу выбрать элегантный способ обработки подключения к базе данных.
!! Что я сделал. При каждом создании экземпляра класса я всегда передаю объект PDO конструктору. Конструктор хранит ссылку на данный объект PDO.
class Examples
{
/* Properties */
public $db;
/* Constructor */
public function __construct(PDO amp;pdo)
{
$this->db = $pdo;
}
//..
}
Это работает хорошо, даже если я страдаю от неизвестной причины. Меня преследуют некоторые сомнения в bzar, Am I doing right?
Главный вопрос в том, как я могу предоставить подключение к базе данных определенному классу? расширить PDO? передать объект PDO в качестве параметра? или создать другой класс, расширяющий PDO и реализующий оба? ..??? ??? ???????????? ; OTL
Ответ №1:
Вам не нужно передавать $pdo в качестве ссылки, используя амперсанд, потому что в PHP объекты передаются по ссылкам по умолчанию. Ваш пример в порядке. Никогда не расширяйте свой класс entity / model с помощью PDO, если не используете специализированную версию PDO. Если у вас много классов, использующих $ pdo и другие сервисы (такие как сеансы, файловая система, API и т.д.), Вы можете подумать о создании диспетчера служб (контейнера), а затем вызвать его, чтобы получить повторно используемые объекты, такие как ваш $ pdo. В случае, если вы замените PDO чем-то другим в будущем, вам не нужно переписывать все классы, которые используют его в качестве аргумента.