dbpp — обёртка над PDO
Всем привет!
Я решил пока что представить свои библиотеки здесь, первой будет самая любимая — dbpp.
dbpp — это обёртка над PDO, которая предоставляет удобное и безопасное обращение к базам данных. Также она группирует все ваши обращения к базе данных, для того, чтобы при изменении базы данных, вам было проще переписать SQL запросы. Вдохновлено библиотекой Room от Google.
Установка
Установка возможна через composer:
composer require ppeco/dbpp
Обязательно нужен PHP 8.0
Пример использования
Допустим у нас есть база данных, например social. В ней будет таблицы users, которые будут содержать пользователей.
Для начала работы нужно создать класс расширенный от Database, который будет работать с нашей базой. Назовём её SocialDatabase.
<?php
use dbpp\Database;
class SocialDatabase extends Database {
}
Дальше нам нужно создать класс, который будет работать с нашей таблицей users. Назовём её UsersDao и расширим от класса Dao.
<?php
use dbpp\Dao;
class UsersDao extends Dao {
}
Дальше в нём мы будем писать методы обращения к базе данных.
Давайте напишем метод создания пользователя в базе данных:
#[Insert('INSERT INTO `users`(`id`, `name`) VALUES (NULL, :name)', ['id')]
public function create(string $name): int|false {
return parent::create($name);
}
Также давайте напишем метод получения всех пользователей в таблице:
#[Query('SELECT * FROM `users`')]
public function getAll(): array|false {
return parent::getAll();
}
UsersDao у нас готов, теперь его нужно подключить к SocialDatabase.
Нужно просто добавить в класс SocialDatabase public UsersDao $users;
Ну и всё, осталось только создать экземпляр класса SocialDatabase и сделать нужные запросы:
$db = new SocialDatabase(new PDO(...));
if ($userId = $db->users->create("Имя пользователя"))
echo 'Новый пользователем с id: '.$userId.'</br>';
else echo 'Пользователь не создан</br>';
$users = $db->users->getAll();
foreach($users as $i => $user) {
echo $i.'. '.$user['name'].'</br>';
}
Как это работает?
При обращении к методу вызывается магическая функция в Dao, которая ищет атрибут запроса в методе и обращается к PDO, который возвращает некий результат. dbpp смотрит то что вам надо и старается подобрать подходящий тип результата.
GitHub: Перейти
Всем спасибо за внимание!
Очень интересно. Спасибо. А я глядя ваш сайт почему-то подумал, по материалам: Kotlin, KayJam, наподобие JavaScript… что-то будет не связано с php, а тут php :) Интересно.