bitendian / tbp
轻量级PHP库
v1.0.32
2022-10-14 11:13 UTC
Requires
- php: >=5.3.2
Requires (Dev)
- php: ^7.3
- phpunit/phpunit: ^9
Suggests
- predis/predis: Redis connection implementation
This package is auto-updated.
Last update: 2024-09-14 15:22:16 UTC
README
TBP是一个轻量级框架,专为开发小型和中型网站而设计。专注于面向组件
数据库接口
SQLite
SQLite3连接器。与预处理语句(强制)一起工作。支持事务。
安装
需要PHP扩展ext-sqlite3
。检查phpinfo()
。默认情况下,tbp-web-server
Docker镜像支持SQLite。
将以下内容添加到composer.json
文件的require
部分
"ext-sqlite3": "*"
配置
创建一个配置文件,例如config/my-sqlite.config
# TBP/SQLite config file.
# ALL PARAMETERS ARE OPTIONAL!
# Database file name (if not defined, will use 'default.db')
filename=resources/test.db
# Access type
# readOnly=yes
# Encryption key (if not defined, no encryption used)
# encryptionKey=
实现
创建一个扩展AbstractSqliteDomain
的域,并传递您的配置文件。为每个需要的查询添加一个方法。
class MyDomain extends AbstractSqliteDomain { public function __construct() { $configReader = new Config(__CONFIG_PATH__); // <-- get a config reader, passing your config folder $config = $configReader->getConfig('my-sqlite'); // <-- read your configuration, passing your config base name $config->filename = // <-- convert your relative path into absolute path __BASE_PATH__ . DIRECTORY_SEPARATOR . $config->filename; parent::__construct($config); $this->open(); // <-- open a db connection and let's rock! } public function addRegister($a, $b) { $sql = "INSERT INTO `MyTableWithAutoInc` (`a`, `b`) VALUES (?, ?)"; $params = array($a, $b); return self::insertWithAutoincrement($this->connection->command($sql, $params)); } public function addAnotherRegister($a, $b) { $sql = "INSERT INTO `MyOtherTable` (`a`, `b`) VALUES (?, ?)"; $params = array($a, $b); return $this->connection->command($sql, $params); } public function getRegisters($b) { $sql = "SELECT * FROM `MyTableWithAutoInc` WHERE `b` <= ?"; $params = array($b); return self::getAll($this->connection->select($sql, $params)); } public function getRegisterById($id) { $sql = "SELECT * FROM `MyTableWithAutoInc` WHERE `MyId` = ?"; $params = array($id); return self::getSingle($this->connection->select($sql, $params)); } }
用法
示例直接代码
$domain = new MyDomain(); $results = $domain->getRegisters(9391); // get an array
示例使用事务的代码
$domain = new MyDomain(); try { $domain->begin(); $lastId = $domain->addRegister(1, 2); echo "first query: last inserted id: $lastId\n"; $lastId = $domain->addRegister(3, 4); echo "second query: last inserted id: $lastId\n"; $domain->commit(); } catch (Exception $e) { $domain->rollback(); echo "ERROR: " . $e->getMessage() . "\n"; }