Класс для работы с базой данных

Класс для работы с базой данных

В этом уроке мы с вами научимся работать с базой данных в ООП-стиле. Как мы с вами уже говорили в уроке о взаимодействии PHP и MySQL, в современном PHP для работы с базами данных принято использовать PDO.

Так как мы учимся работать в ООП-стиле, то, как вы уже наверное догадались, мы будем использовать для соединения и работы с базой данных специальный класс. Давайте создадим в нашем проекте папку src/MyProject/Services и внутри неё создадим класс Db.php
src/MyProject/Services/Db.php

Код доступен только после покупки курса ООП в PHP7.

Давайте также создадим файл с настройками для подключения к базе данных. Он будет представлять собой простой массив.
src/settings.php

Код доступен только после покупки курса ООП в PHP7.

Если у вас как и у меня установлен OpenServer, то настройки будут такими же. Иначе – задавайте здесь свои настройки.

Теперь давайте в конструктора нашего класса установим соединение с базой данных. Мы будем работать через PDO, подробнее об этом читайте в статье Взаимодействие PHP и MySQL.
src/MyProject/Services/Db.php

Код доступен только после покупки курса ООП в PHP7.

Свойство $this->pdo теперь можно использовать для работы с базой данных через PDO. Давайте напишем отдельный метод для выполнения запросов в базу.

Код доступен только после покупки курса ООП в PHP7.

Всё, класс для работы с базой данных готов. Давайте теперь попробуем его использовать для вывода статей на сайте прямо из базы.
src/MyProject/Controllers/MainController.php

Код доступен только после покупки курса ООП в PHP7.

Давайте посмотрим на результат.

Статьи в виде массива

То есть сейчас $articles – это массив с двумя вложенными элементами-массивами, представляющих собой статьи из базы данных.

Наш класс для работы с базой данных готов. В следующем уроке мы начнём его использовать для вывода статей на сайте.

Читайте также
Комментарии


rusgil
rusgil

Каждый раз при обращении к БД устанавливается кодировка:

$this->pdo->exec('SET NAMES UTF8');

Зачем это нужно? Если таблицы в БД уже в UTF-8. Или это проверка на случай, если таблицы в другой кодировке? Поясните, пожалуйста, подробнее про кодировки и зачем это делается.
Спасибо.

ivashkevich
ivashkevich

Это задаётся кодировка не для самой базы данных, а для соединения, в рамках которого мы будем с базой данных работать. В зависимости от ОС, на которой запущен сервер и дополнительной конфигурации, эта кодировка может отличаться. Нам важно чтобы наш клиент работал с базой в той же кодировке, что и сама база. Иначе мы в результате запросов будем получать кракозябры.