При работе с PDO как правильно передавать объект pdo методам классов, в которых он нужен?

Есть проект в котором использую PHP PDO для работы с базами данных. Раньше я использовал PHP-шные функции для работы с MySQL, теперь вот решил попробовать PDO. Изучаю документацию, сказано, что для начала необходимо создать объект класса PDO и уже потом спомощью него вызывать необходимые функции для работы с бд. Это значит что всем моим функциям, которые работают с бд, небходим созданный экземпляр PDO. Каким образом им заполучить этот объект?
Т.е., например, в "самом верху" своего приложения я создаю подключение к бд:
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

а ниже идет сложная цепочка вызова нужных классов, подключение разных файлов и т.д. (контроллеры, модели и пр., я работаю по MVC схеме). И во многих классах методы должны работать с бд. Для этого им нужен $DBH. Но они его не видят. Получается что мне после создания подключения, нужно делать $DBH глобальным?
  • Вопрос задан
  • 3275 просмотров
Решения вопроса 3
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
Нет нужно написать класс который будет отвечать за работу с базой данных, через него и делайте все запросы, а внутри него и будет эта переменная $DBH
Ответ написан
Satanpit
@Satanpit
Front-end developer
Зачем глобальным?
Первый вариант: у Вас уже должен быть класс Registry, где Вы регистрируете все нужные объекты и по мере надобности вызываете их, сюда же можно передать Ваш $DBH.

Второй вариант: создать статический класс для работы с БД где Вы будете создавать экземпляр PDO и опишите все нужные методы.
Ответ написан
Комментировать
Создайте свой класс-обёртку для PDO и в коде вызывайте нужные методы этого класса.
Как я понимаю, Вам такой подход ближе всего.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы