gooddaykya/pdobase

PDOBase. PDO的包装器

v1.2.1-stable 2019-02-09 18:02 UTC

README

Latest Stable Version Total Downloads License

PDO的包装器

描述

这是什么?

PDOBase 是一个轻量级且易于配置的 PDO 包装器。它隐藏了大多数常规操作,因此开发者可以专注于做什么,而不是怎么做

它不是什么?

PDOBase 不是一个查询构建器,也不包含查询构建器。

有两个原因

  1. 支持每个 SQL 功能将增加现有类的复杂性。
  2. 与特定数据库适配器分离的查询构建器,可以通过使用 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();
    }

测试

测试表

待办事项列表

[ ] 将当前测试用例分别分为事务和非事务套件。

[ ] 直接从数据库检索预期结果。

EOF