Справочник API
Полный справочник по всем публичным классам и методам.
Содержание
Connection
AsceticSoft\Rowcast\Connection
PDO-обёртка с хелперами для запросов, транзакциями (включая вложенные через savepoint) и фабрикой QueryBuilder.
Фабрика / конструктор
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 |
executeStatement(string $sql, array $params = []) |
int |
fetchAllAssociative(string $sql, array $params = []) |
list<array<string, mixed>> |
fetchAssociative(string $sql, array $params = []) |
array<string, mixed>\|false |
fetchOne(string $sql, array $params = []) |
mixed |
toIterable(string $sql, array $params = []) |
iterable<int, array<string, mixed>> |
transactional(callable $callback) |
mixed |
createQueryBuilder() |
QueryBuilder |
getDriverName() |
string |
getPdo() |
\PDO |
DataMapper
AsceticSoft\Rowcast\DataMapper
Конструктор
public function __construct(
ConnectionInterface $connection,
?NameConverterInterface $nameConverter = null,
?TypeConverterInterface $typeConverter = null,
)
Основные методы
| Метод | Возвращает |
|---|---|
insert(string\|Mapping $target, object $dto) |
void |
batchInsert(string\|Mapping $target, array $dtos, ?int $maxBindParameters = null) |
void |
update(string\|Mapping $target, object $dto, array $where) |
int |
batchUpdate(string\|Mapping $target, array $dtos, array $identityProperties, ?int $maxBindParameters = null) |
void |
delete(string\|Mapping $target, array $where) |
int |
findAll(string\|Mapping $target, array $where = [], array $orderBy = [], ?int $limit = null, ?int $offset = null) |
list<object> |
iterateAll(string\|Mapping $target, array $where = [], array $orderBy = [], ?int $limit = null, ?int $offset = null) |
iterable<int, object> |
findOne(string\|Mapping $target, array $where = []) |
object\|null |
save(string\|Mapping $target, object $dto, string ...$identityProperties) |
void |
upsert(string\|Mapping $target, object $dto, string ...$conflictProperties) |
int |
batchUpsert(string\|Mapping $target, array $dtos, array $conflictProperties, ?int $maxBindParameters = null) |
void |
hydrate(string\|Mapping $target, array $row) |
object |
hydrateAll(string\|Mapping $target, array $rows) |
list<object> |
extract(string\|Mapping $target, object $dto) |
array<string, mixed> |
getConnection() |
ConnectionInterface |
Mapping
AsceticSoft\Rowcast\Mapping
Фабрики
public static function auto(string $className, string $table): self
public static function explicit(string $className, string $table): self
Основные методы
| Метод | Возвращает |
|---|---|
column(string $columnName, string $propertyName) |
self |
ignore(string ...$properties) |
self |
getClassName() |
string |
getTable() |
string |
isAutoDiscover() |
bool |
getColumns() |
array<string, string> |
NameConverterInterface
AsceticSoft\Rowcast\NameConverter\NameConverterInterface
interface NameConverterInterface
{
public function toPropertyName(string $columnName): string;
public function toColumnName(string $propertyName): string;
}
Реализация по умолчанию: SnakeCaseToCamelCase.
TypeConverterInterface
AsceticSoft\Rowcast\TypeConverter\TypeConverterInterface
interface TypeConverterInterface
{
public function supports(string $phpType): bool;
public function toPhp(mixed $value, string $phpType): mixed;
public function toDb(mixed $value): mixed;
}
Встроенные конвертеры: ScalarConverter, BoolConverter, DateTimeConverter, JsonConverter, EnumConverter.
TypeConverterRegistry
AsceticSoft\Rowcast\TypeConverter\TypeConverterRegistry
| Метод | Возвращает |
|---|---|
static defaults() |
self |
add(TypeConverterInterface $converter) |
self |
supports(string $phpType) |
bool |
toPhp(mixed $value, string $phpType) |
mixed |
toDb(mixed $value) |
mixed |
QueryBuilder
AsceticSoft\Rowcast\QueryBuilder\QueryBuilder
SELECT
| Метод | Возвращает |
|---|---|
select(string ...$columns) |
self |
from(string $table, ?string $alias = null) |
self |
leftJoin(string $table, string $alias, string $condition) |
self |
innerJoin(string $table, string $alias, string $condition) |
self |
rightJoin(string $table, string $alias, string $condition) |
self |
where(string\|array $expression) |
self |
andWhere(string\|array $expression) |
self |
orWhere(string\|array $expression) |
self |
whereOr(array ...$groups) |
self |
andWhereOr(array ...$groups) |
self |
groupBy(string ...$columns) |
self |
having(string $expression) |
self |
orderBy(string $column, string $direction = 'ASC') |
self |
addOrderBy(string $column, string $direction = 'ASC') |
self |
setLimit(int $limit) |
self |
setOffset(int $offset) |
self |
INSERT
| Метод | Возвращает |
|---|---|
insert(string $table) |
self |
values(array $values) |
self |
upsert(string $table) |
self |
onConflict(string ...$columns) |
self |
doUpdateSet(array $columns) |
self |
UPDATE
| Метод | Возвращает |
|---|---|
update(string $table) |
self |
values(array $values) |
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 Upsert;
case Update;
case Delete;
}
Архитектура
AsceticSoft\Rowcast\
├── Connection # PDO-обёртка с удобными методами
├── DataMapper # Основной DataMapper (CRUD + batch + upsert)
├── Hydrator # Reflection-гидратор
├── Extractor # Извлечение DTO -> строка БД
├── Mapping # Модель auto/explicit-маппинга
├── NameConverter\
│ ├── NameConverterInterface # Контракт конвертера имён
│ └── SnakeCaseToCamelCase # snake_case ↔ camelCase (по умолч.)
├── QueryBuilder\
│ ├── QueryBuilder # Fluent SQL-построитель
│ └── QueryType # Enum типа запроса
└── TypeConverter\
├── TypeConverterInterface # Контракт конвертера типов
├── TypeConverterRegistry # Реестр конвертеров
├── ScalarConverter # int, float, string
├── BoolConverter # bool <-> 0/1
├── DateTimeConverter # DateTimeInterface
├── JsonConverter # array <-> JSON
└── EnumConverter # BackedEnum