Search by

joke-php / db-sql

Voral

Database integration for Joke framework

Package info

github.com/joke-php/db-sql

pkg:composer/joke-php/db-sql

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.1 2026-09-10 12:09 UTC

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.

Scrutinizer Code Quality Code Coverage PHP Tests

Модуль предполагает три уровня взаимодействия с базами данных:

  • Низкий уровень (реализовано) — работа с сырыми 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
  • абстрактный класс логера реализующий основной функционал, но оставляющий на ответственность разработчика подготовку запроса и данных перед записью в лог