boronczyk / alistair
教育数据库包装器和 MVC 模型启动工具包
0.9
2021-12-09 00:01 UTC
Requires
- php: ^8.0
- ext-pdo: *
Requires (Dev)
- ext-pdo_sqlite: *
- phpstan/phpstan: ^1.2
- phpunit/phpunit: ^9.5
README
Alistair 是一个为教学目的编写的简单 SQL 数据库包装器。它展示了如何封装常见的数据库操作,并将原始查询组织为 MVC 模型/存储库的基础。
类
DbAccess
DbAccess
类提供了执行 SQL 数据库查询的方法。
DbAccessInterface
定义的函数
query
- 执行查询queryRows
- 执行查询并返回结果行queryRow
- 执行查询并返回单个结果行queryValue
- 执行查询并返回单个值getPdo
- 获取底层的 PDO 连接对象
示例用法
<?php
use Boronczyk\Alistair\DbAccess;
class Users
{
public function __construct(
protected DbAccess $db
) {
}
public function getById(int $id): array
{
return $this->db->queryRow(
'SELECT id, username, email FROM users WHERE id = ?',
[$id]
);
}
}
$db = new DbAccess(new \PDO(...));
$users = new Users($db);
$user = $users->getById(42);
CrudModel
CrudModel
是一个抽象类,提供了 CRUD 操作(创建、检索、更新、删除)的基本方法。实现必须实现 columns
方法,返回一个包含表已知列名的数组。
实现可以覆盖 table
方法,返回表名(基本实现从类的名称推导出表名)。实现还可以覆盖 requiredColumns
方法,返回一个数组,包含执行创建和更新操作所需的列名,如果列表与 column
返回的列表不同。
CrudModelInterface
定义的函数
table
- 返回表名columns
- 返回已知列名列表count
- 返回表中的记录数get
- 返回记录,支持列过滤和分页getById
- 通过 ID 返回记录,支持列过滤create
- 创建新记录update
- 更新现有记录delete
- 删除现有记录
示例用法
<?php
use Boronczyk\Alistair\DbAccess;
use Boronczyk\Alistair\CrudModel;
class Users extends CrudModel
{
// implementation required by abstract class
public function columns(): array {
return [
'username',
'email'
];
}
}
$db = new DbAccess(new \PDO(...));
$users = new Users($db);
$user = $users->getById(42);