joke-php / db-sql
Database integration for Joke framework
1.0.1
2026-09-10 12:09 UTC
Requires
- php: ^8.5
- ext-pdo: *
- voral/joke: ^1.6
Requires (Dev)
- ext-sqlite3: *
- friendsofphp/php-cs-fixer: ^3.95
- php-mock/php-mock-phpunit: ^2.14
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^13.1
- voral/version-increment: ^3.2
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-10 12:09:41 UTC
README
В разработке
Библиотека предоставляет базовые возможности взаимодействия с реляционными базами данных, необходимые интерфейсы, а
также реализацию на базе PDO. Поддерживаются драйверы: dblib, cubrid, odbc, mysql,
pgsql, sqlite, firebird, ibm, informix, oci, sqlsrv.
Модуль предполагает три уровня взаимодействия с базами данных:
- Низкий уровень (реализовано) — работа с сырыми SQL-запросами.
- Построитель запросов (планируется) — программное построение SQL-запросов.
- ORM (планируется) — работа с объектами и связями между ними с максимальной абстракцией от SQL.
Требования
- PHP 8.5+ — используются возможности введенные с версии 8.5, на более ранних версиях пакет не запустится.
- Расширения PHP — обязательно
pdo, а такжеpdo_sqlite3для режима разработки. - Фреймворк —
voral/joke^1.6.
Установка
composer require joke-php/db-sql
Затем зарегистрируйте DatabaseProvider в bootstrap/kernel.php:
<?php declare(strict_types=1); use Vasoft\Joke\Db\Sql\DatabaseProvider; use Vasoft\Joke\Application\KernelConfig; return new KernelConfig() ->addProvider(DatabaseProvider::class);
И настройте подключения:
<?php // config/database.php /** @var Environment $env */ declare(strict_types=1); use Vasoft\Joke\Config\Environment; use Vasoft\Joke\Db\Sql\DatabaseConfig; use Vasoft\Joke\Db\Sql\Demo\Driver\JsonConnection; use Vasoft\Joke\Db\Sql\Driver\Pdo\Connection; use Vasoft\Joke\Support\FileSystem; return new DatabaseConfig() ->addConnection( 'main', static function (Environment $env, FileSystem $fs) { $databasePath = $fs->atBase($env->get('SQLITEDATABASE')); return new Connection('sqlite', $databasePath); }, ) ->setDefaultConnectionName('main');
Использование в приложении
use Vasoft\Joke\Db\Sql\Contract\ConnectionInterface; use Vasoft\Joke\Db\Sql\Contract\ResultInterface; use Vasoft\Joke\Db\Sql\ConnectionManager; use Vasoft\Joke\Db\Sql\Exceptions\QueryException; class UserRepository { private ConnectionInterface $connection; public function __construct(ConnectionManager $manager) { $this->connection = $manager->connection(); } /** * Возвращает пользователей с именем содержащим заданную строку * * @throws QueryException */ public function nameContain(string $name): ResultInterface { $value = '%' . $name . '%'; return $this->connection->query('SELECT id, name, age FROM users WHERE name LIKE :name', ['name' => $value]); } }
В планах
- Построитель запросов
- ORM
- абстрактный класс логера реализующий основной функционал, но оставляющий на ответственность разработчика подготовку запроса и данных перед записью в лог