Rowcast
Легковесный DataMapper поверх PDO для PHP 8.4+ с гидратацией DTO и приведением типов.
Что такое 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
Полный справочник по всем публичным классам и методам.