gooddaykya /pdobase
PDOBase. PDO的包装器
v1.2.1-stable
2019-02-09 18:02 UTC
Requires
- php: >=5.3
- ext-pdo: *
- ext-pdo_mysql: *
Requires (Dev)
- phpunit/phpunit: ^6.5
Suggests
- php: >=7.0
This package is auto-updated.
Last update: 2024-09-10 06:47:05 UTC
README
PDO的包装器
描述
这是什么?
PDOBase 是一个轻量级且易于配置的 PDO 包装器。它隐藏了大多数常规操作,因此开发者可以专注于做什么,而不是怎么做。
它不是什么?
PDOBase 不是一个查询构建器,也不包含查询构建器。
有两个原因
- 支持每个 SQL 功能将增加现有类的复杂性。
- 与特定数据库适配器分离的查询构建器,可以通过使用 SQL 的其他适配器来重复使用。
使用
实例化
require '../vendor/autoload.php';
$requisites = array(
'host' => 'localhost',
'user' => 'root',
'charset' => 'utf8',
'dbname' => 'test_base',
'password' => ''
);
$db = new \gooddaykya\components\PDOBase($requisites);
或者,通过从外部文件传递数组
require '../vendor/autoload.php';
$db = new \gooddaykya\components\PDOBase(require '../requisites.php');
从数据库获取数据
$result = $db->execQuery('SELECT * FROM const_table')('fetchAll');
使用预处理语句
$request = 'SELECT val, textval FROM const_base WHERE id = :id';
$bindParams = array(
':id' => 1
);
$result = $db->execQuery($request, $bindParams)('fetch');
ACID 示例
$primeRequest = 'INSERT INTO main_table (val) VALUES (:val)';
$dependentReq = 'INSERT INTO dep_table (id, val) VALUES (:id, :val)';
try {
$db->beginTransaction();
$insertedId = $db->execQuery($primeRequest,
array(':val' => 'Independent value')
)('lastInsertId');
$result = $db->execQuery(
$dependentReq,
array(
':id' => $insertedId,
':val' => 'Dependent value'
)
)('rowCount');
$db->commit();
} catch (\PDOException $e) {
$db->rollback();
}
测试
测试表
待办事项列表
[ ] 将当前测试用例分别分为事务和非事务套件。
[ ] 直接从数据库检索预期结果。