mistralys/application-dbhelper

使用PDO的PHP数据库抽象层。

dev-master 2019-11-08 12:04 UTC

This package is auto-updated.

Last update: 2024-09-08 22:42:44 UTC


README

Build Status

DBHelper

PHP数据库抽象层。

安装

只需通过composer要求此包

"require": {
   "mistralys/application-dbhelper": "dev-master"
}

配置

要开始,至少需要添加一个数据库连接

$database = DBHelper::addDatabase('identifier', 'database_name')
->setHost('somehost') // default is localhost
->setCredentials('username', 'password')
->setPort(1234); // omit to use default port

一旦添加了所有数据库和可选的事件处理器,需要手动初始化helper一次

DBHelper::init()

数据库初始化命令

可以通过初始化命令进一步配置数据库连接,该命令在建立连接时运行。通常,这用于设置连接的编码。

$database->setInitCommand('SET NAMES latin1');

方法概述

获取单个记录

  • fetch:从自定义SQL语句中获取记录数据。
  • fetchData:获取记录数据,动态构建SQL语句。
  • fetchKey:获取记录数据,并返回指定的列值。

获取多个记录

  • fetchAll:从自定义SQL语句中获取所有条目。
  • fetchAllKey:从自定义SQL语句中获取索引数组,包含单个列的值。

删除记录

  • delete:使用自定义SQL语句删除记录。
  • deleteRecords:删除记录,动态构建SQL语句。

事务

  • startTransaction:开始事务。
  • commitTransaction:提交活动事务。
  • rollbackTransaction:回滚活动事务。

表相关

  • columnExists:检查特定列是否存在于表中。
  • fetchTableNames:检索数据库中所有表的名称。
  • dropTables:删除数据库中的所有表。
  • tableExists:检查指定的表是否存在于数据库中。
  • isAutoincrementColumn:检查列是否是自增列。

调试和日志记录

  • countQueries:计算到此点为止执行的查询数量(需要查询跟踪)。
  • countSelectQueries:计算到此点为止执行的SELECT查询数量(需要查询跟踪)。
  • countWriteQueries:计算到此点为止执行的数据库写操作数量(需要查询跟踪)。
  • enableDebugging:启用查询调试,该调试将在此调用之后回显所有SQL语句。
  • enableQueryTracking:启用保存所有查询到内存,以便以后访问。
  • disableDebugging:在启用调试后再次禁用调试。
  • disableQueryTracking:在启用查询跟踪后再次禁用查询跟踪。
  • getSelectQueries:检索到此点为止执行的 所有SELECT SQL语句(需要查询跟踪)。
  • getWriteQueries:检索到此点为止执行的 所有写操作SQL语句(需要查询跟踪)。
  • getQueryCount:返回到此点为止执行的查询总数。
  • getQueries:检索到此点为止执行的 所有SQL语句(需要查询跟踪)。
  • setLogCallback:设置用于处理日志消息的回调。

事件处理

目前有两个事件可以添加监听器

  1. Init:在初始化完成后调用,数据库连接成功,可以运行查询。
  2. OnBeforeWriteOperation:每当即将执行写操作时调用。允许取消操作。

这两个事件都有自己的方法来添加回调函数或方法作为事件监听器。

DBHelper::onInit('handle_initDatabase');
DBHelper::onBeforeWriteOperation('handle_beforeWriteOperation');

回调函数始终将事件对象作为第一个参数传递。可以在参数参数中可选地指定额外的参数。

 DBHelper::onInit(
     'handle_initDatabase', 
     array(
         'foo', 
         'bar'
     )
);
 
function handle_initDatabase(\AppDB\DBHelper_Event $event, $param1, $param2)
{
    // $param1 = 'foo'
    // $param2 = 'bar'
}

来源

历史上,这些类被集成在多个旧应用中。这个存储库的目标是集中代码,使其更容易测试和维护。