Rowcast

Легковесный DataMapper поверх PDO для PHP 8.4+ с гидратацией DTO и приведением типов.

CI codecov PHPStan Level 9 Latest Stable Version PHP Version License

Быстрый старт English


Что такое Rowcast?

Rowcast — это современный DataMapper для PHP 8.4+ без внешних зависимостей. Он маппит строки базы данных в простые DTO-объекты и обратно с помощью Reflection, автоматического приведения типов, соглашений об именовании и fluent-построителя запросов.

Ключевые особенности

  • Нулевые внешние зависимости — требуется только PHP 8.4 и расширение PDO
  • Автоматический маппинг DTO — строки БД гидратируются в типизированные PHP-объекты через Reflection
  • Приведение типов — автоматическая конвертация между PHP и типами БД (DateTime, BackedEnum, скаляры)
  • Два режима маппинга — Auto-режим с соглашениями или Explicit-режим с Mapping
  • Fluent-построитель запросов — построение сложных SQL-запросов с цепочечным API
  • Конвертация snake-to-camel — колонки в snake_case маппятся в camelCase-свойства по умолчанию
  • Вложенные транзакции — поддержка вложенных транзакций на основе savepoints
  • PHPStan Level 9 — полностью статически проанализированная кодовая база

Быстрый пример

use AsceticSoft\Rowcast\Connection;
use AsceticSoft\Rowcast\DataMapper;

// Определяем DTO
class User
{
    public int $id;
    public string $name;
    public string $email;
}

// Подключаемся и создаём маппер
$connection = Connection::create('mysql:host=localhost;dbname=app', 'root', 'secret');
$mapper = new DataMapper($connection);

// Вставка
$user = new User();
$user->name = 'Alice';
$user->email = 'alice@example.com';
$mapper->insert('users', $user);

// Поиск
$user = $mapper->findOne(User::class, ['id' => 1]);

Несколько строк — и полноценный DataMapper с автоматическим приведением типов и гидратацией DTO готов.


Почему Rowcast?

Возможность Rowcast Традиционные ORM
Нулевые внешние зависимости Да Часто много
Простые DTO-объекты (без базового класса) Да Требуют entity-базу
Автоматическое приведение типов Да Ручное или через аннотации
Маппинг на основе соглашений Да Конфигурационные файлы
Fluent-построитель запросов Да Да
Вложенные транзакции (savepoints) Да Не все
PHPStan Level 9 Да По-разному
Порог вхождения Минимальный Высокий

Требования

  • PHP >= 8.4
  • Расширение PDO

Установка

composer require ascetic-soft/rowcast

Документация

Быстрый старт

Установка, первый DTO и базовый CRUD за 5 минут.

Connection

PDO-обёртка, прямые запросы, транзакции и savepoints.

DataMapper

Insert, update, delete, findAll, findOne и iterateAll.

Маппинг

Auto-режим, `Mapping` и конвертеры имён.

Приведение типов

Скаляры, DateTime, BackedEnum и пользовательские конвертеры типов.

Построитель запросов

Fluent SQL-построитель для SELECT, INSERT, UPDATE, DELETE.

Гидратация

Reflection-гидратор и поддержка пользовательских гидраторов.

Справочник API

Полный справочник по всем публичным классам и методам.