ПДО объектов по классам


Я ищу некоторую обратную связь по следующим вопросам:

В настоящее время у меня есть два класса, которые используются в моем приложении PHP.

Класс подключения к базе данных, который в настоящее время использует MySQL (но переключается на PDO).

Другой класс (с несколькими функциями), который требует функциональности базы данных.

Я ищу лучший способ создать это, я читал синглтоны (с очень смешанными отзывами), читал примеры, где объекты были просто объявлены как new для каждого метода (функции класса) и примеры, в которых соединение было назначено частной переменной как часть метода __constructor для каждого класса (затем ссылаются на $this->).

Итак, как же все остальные это делают? Я надеюсь, что вы будете достаточно любезны, чтобы, возможно, привести пример, а также приветствовать мнения о том, что другие прочитали, пожалуйста. У меня есть 2 отдельных класса, в двух отдельных файлах. Я хочу сохранить чистый код, уменьшить ненужные накладные расходы на БД и избежать всего, что может считать устаревшими (например, глобальными).
2 3

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 каждый раз, если у вас нет очень веской причины.