Статья

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);
}

Также давайте напишем метод получения всех пользователей в таблице: php #[Query('SELECT * FROM `users`')] public function getAll(): array|false { return parent::getAll(); }

UsersDao у нас готов, теперь его нужно подключить к SocialDatabase. Нужно просто добавить в класс SocialDatabase public UsersDao $users;

Ну и всё, осталось только создать экземпляр класса SocialDatabase и сделать нужные запросы: php $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: Перейти

Всем спасибо за внимание!

1 Ответ

  1. Очень интересно. Спасибо. А я глядя ваш сайт почему-то подумал, по материалам: Kotlin, KayJam, наподобие JavaScript… что-то будет не связано с php, а тут php :) Интересно.