mistralys / application-dbhelper
使用PDO的PHP数据库抽象层。
dev-master
2019-11-08 12:04 UTC
Requires
- mistralys/application-utils: >=1.0
Requires (Dev)
- phpunit/phpunit: 8.2.5
This package is auto-updated.
Last update: 2024-09-08 22:42:44 UTC
README
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:设置用于处理日志消息的回调。
事件处理
目前有两个事件可以添加监听器
Init
:在初始化完成后调用,数据库连接成功,可以运行查询。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' }
来源
历史上,这些类被集成在多个旧应用中。这个存储库的目标是集中代码,使其更容易测试和维护。