Справочник API
Полный справочник по всем публичным классам и методам.
Содержание
Connection
AsceticSoft\Rowcast\Connection
Тонкая PDO-обёртка с удобными методами и поддержкой транзакций.
Фабрика
public static function create(
string $dsn,
?string $username = null,
?string $password = null,
array $options = [],
bool $nestTransactions = false,
): self
Конструктор
public function __construct(\PDO $pdo, bool $nestTransactions = false)
Методы запросов
| Метод |
Возвращает |
Описание |
executeQuery(string $sql, array $params = []) |
\PDOStatement |
Выполнить SELECT-запрос |
executeStatement(string $sql, array $params = []) |
int |
Выполнить INSERT/UPDATE/DELETE, возвращает кол-во строк |
fetchAllAssociative(string $sql, array $params = []) |
array |
Получить все строки как ассоциативные массивы |
fetchAssociative(string $sql, array $params = []) |
array\|false |
Получить одну строку |
fetchOne(string $sql, array $params = []) |
mixed |
Получить скалярное значение |
toIterable(string $sql, array $params = []) |
iterable |
Вернуть результаты как генератор |
lastInsertId(?string $name = null) |
string\|false |
Получить последний вставленный ID |
Методы транзакций
| Метод |
Возвращает |
Описание |
beginTransaction() |
void |
Начать транзакцию (или savepoint) |
commit() |
void |
Зафиксировать транзакцию (или освободить savepoint) |
rollBack() |
void |
Откатить транзакцию (или до savepoint) |
transactional(callable $callback) |
mixed |
Выполнить в транзакции с авто-коммитом/откатом |
getTransactionNestingLevel() |
int |
Получить текущую глубину вложенности |
Другие методы
| Метод |
Возвращает |
Описание |
createQueryBuilder() |
QueryBuilder |
Создать новый построитель запросов |
getPdo() |
\PDO |
Получить базовый PDO-экземпляр |
DataMapper
AsceticSoft\Rowcast\DataMapper
Конструктор
public function __construct(
Connection $connection,
?NameConverterInterface $nameConverter = null,
?HydratorInterface $hydrator = null,
)
Методы
| Метод |
Возвращает |
Описание |
insert(string\|ResultSetMapping $target, object $dto) |
string\|false |
Вставить DTO, возвращает последний ID |
update(string\|ResultSetMapping $target, object $dto, array $where) |
int |
Обновить строки, возвращает кол-во |
delete(string\|ResultSetMapping $target, array $where) |
int |
Удалить строки, возвращает кол-во |
findAll(string\|ResultSetMapping $target, array $where = [], array $orderBy = [], ?int $limit = null, ?int $offset = null) |
array |
Найти все строки как DTO |
iterateAll(string\|ResultSetMapping $target, array $where = [], array $orderBy = [], ?int $limit = null, ?int $offset = null) |
iterable |
Итерировать строки как DTO (генератор) |
findOne(string\|ResultSetMapping $target, array $where = []) |
object\|null |
Найти одну строку как DTO |
getConnection() |
Connection |
Получить подключение |
ResultSetMapping
AsceticSoft\Rowcast\Mapping\ResultSetMapping
Конструктор
public function __construct(string $className, ?string $table = null)
Методы
| Метод |
Возвращает |
Описание |
addField(string $column, string $property) |
self |
Замаппить колонку на свойство |
getClassName() |
string |
Получить имя DTO-класса |
getTable() |
?string |
Получить имя таблицы |
getFields() |
array |
Получить все маппинги полей |
Статическая фабрика
public static function fromArray(array $config): self
Формат массива:
[
'class' => User::class,
'table' => 'custom_users',
'fields' => [
'column_name' => 'propertyName',
],
]
NameConverterInterface
AsceticSoft\Rowcast\Mapping\NameConverter\NameConverterInterface
interface NameConverterInterface
{
public function toPropertyName(string $columnName): string;
public function toColumnName(string $propertyName): string;
}
Реализации
| Класс |
Описание |
SnakeCaseToCamelCaseConverter |
snake_case ↔ camelCase (по умолчанию) |
NullConverter |
Без конвертации (pass-through) |
HydratorInterface
AsceticSoft\Rowcast\Hydration\HydratorInterface
interface HydratorInterface
{
public function hydrate(string $className, array $row, ?ResultSetMapping $rsm = null): object;
public function hydrateAll(string $className, array $rows, ?ResultSetMapping $rsm = null): array;
}
Реализации
| Класс |
Описание |
ReflectionHydrator |
Гидратация на основе Reflection с приведением типов (по умолчанию) |
TypeCasterInterface
AsceticSoft\Rowcast\TypeCaster\TypeCasterInterface
interface TypeCasterInterface
{
public function supports(string $type): bool;
public function cast(mixed $value, string $type): mixed;
}
Встроенные реализации
| Класс |
Поддерживаемые типы |
ScalarTypeCaster |
int, float, bool, string |
DateTimeTypeCaster |
DateTime, DateTimeImmutable, DateTimeInterface |
EnumTypeCaster |
Любой BackedEnum |
TypeCasterRegistry
AsceticSoft\Rowcast\TypeCaster\TypeCasterRegistry
| Метод |
Возвращает |
Описание |
static createDefault() |
self |
Создать со всеми встроенными кастерами |
addCaster(TypeCasterInterface $caster) |
void |
Зарегистрировать пользовательский кастер |
supports(string $type) |
bool |
Проверить поддержку типа |
cast(mixed $value, string $type) |
mixed |
Привести значение к указанному типу |
QueryBuilder
AsceticSoft\Rowcast\QueryBuilder\QueryBuilder
SELECT
| Метод |
Возвращает |
select(string ...$columns) |
self |
from(string $table, ?string $alias = null) |
self |
leftJoin(string $from, string $table, string $alias, string $condition) |
self |
innerJoin(string $from, string $table, string $alias, string $condition) |
self |
rightJoin(string $from, string $table, string $alias, string $condition) |
self |
where(string $expression) |
self |
andWhere(string $expression) |
self |
orWhere(string $expression) |
self |
groupBy(string ...$columns) |
self |
having(string $expression) |
self |
orderBy(string $column, string $direction = 'ASC') |
self |
addOrderBy(string $column, string $direction = 'ASC') |
self |
setMaxResults(?int $limit) |
self |
setFirstResult(?int $offset) |
self |
INSERT
| Метод |
Возвращает |
insert(string $table) |
self |
values(array $values) |
self |
UPDATE
| Метод |
Возвращает |
update(string $table) |
self |
set(string $column, string $value) |
self |
DELETE
| Метод |
Возвращает |
delete(string $table) |
self |
Параметры и выполнение
| Метод |
Возвращает |
Описание |
setParameter(string\|int $key, mixed $value) |
self |
Задать параметр запроса |
getSQL() |
string |
Получить сгенерированный SQL |
fetchAllAssociative() |
array |
Выполнить и получить все строки |
fetchAssociative() |
array\|false |
Выполнить и получить одну строку |
fetchOne() |
mixed |
Выполнить и получить скаляр |
executeQuery() |
\PDOStatement |
Выполнить SELECT |
executeStatement() |
int |
Выполнить INSERT/UPDATE/DELETE |
QueryType
AsceticSoft\Rowcast\QueryBuilder\QueryType
enum QueryType
{
case Select;
case Insert;
case Update;
case Delete;
}
Архитектура
AsceticSoft\Rowcast\
├── Connection # PDO-обёртка с удобными методами
├── DataMapper # Основной DataMapper (CRUD-операции)
├── Hydration\
│ ├── HydratorInterface # Контракт гидратора
│ └── ReflectionHydrator # Гидратор на основе Reflection
├── Mapping\
│ ├── ResultSetMapping # Явный маппинг колонок ↔ свойств
│ └── NameConverter\
│ ├── NameConverterInterface # Контракт конвертера имён
│ ├── SnakeCaseToCamelCaseConverter # snake_case ↔ camelCase (по умолч.)
│ └── NullConverter # Без конвертации (pass-through)
├── QueryBuilder\
│ ├── QueryBuilder # Fluent SQL-построитель
│ └── QueryType # Enum типа запроса
└── TypeCaster\
├── TypeCasterInterface # Контракт кастера типов
├── TypeCasterRegistry # Реестр, управляющий кастерами
├── ScalarTypeCaster # int, float, bool, string
├── DateTimeTypeCaster # DateTime, DateTimeImmutable
└── EnumTypeCaster # BackedEnum