ПДО объектов по классам
Я ищу некоторую обратную связь по следующим вопросам:
В настоящее время у меня есть два класса, которые используются в моем приложении PHP.
Класс подключения к базе данных, который в настоящее время использует MySQL
(но переключается на PDO
).
Другой класс (с несколькими функциями), который требует функциональности базы данных.
Я ищу лучший способ создать это, я читал синглтоны (с очень смешанными отзывами), читал примеры, где объекты были просто объявлены как new
для каждого метода (функции класса) и примеры, в которых соединение было назначено частной переменной как часть метода __constructor
для каждого класса (затем ссылаются на $this->
).
2 ответа:
Класс
Database
, который отвечает за подключение, долженбыть тем, который подключается к базе данных, создает новый экземпляр PDO и сохраняет его в поле в себе .class Database { private $pdo; public __construct() { $this->pdo = new PDO(...); } }
Второй класс, которому все равно, откуда берется соединение с БД, ему просто нужно, чтобы оно работало должен быть введен с классом
Database
:class WorkerClass { private $db; public __construct(Database $db) { $this->db = $db; } }
Я всегда создавал его в
__constructor
, а затем использовал$this->
, чтобы добраться до него. Это должно работать для ваших нужд, но я бы посоветовал вам поиграть с различными стилями и посмотреть, какой из них работает лучше всего.Я бы не создавал новый объект с
new
каждый раз, если у вас нет очень веской причины.