nstwf / mysql-connection
Reactphp MySQL 事务连接包装器
1.2.1
2022-12-22 08:00 UTC
Requires
- react/mysql: ^0.5.7|^0.6@dev
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-04 08:40:05 UTC
README
简单的 ConnectionInterface
包装器,使事务操作更简单
在阅读 主要文档 之前
目录
快速入门示例
$factory = new \Nstwf\MysqlConnection\Factory\ConnectionFactory(new \React\MySQL\Factory()); $connection = $factory->createConnection('localhost:3306'); $connection ->transaction(function (\Nstwf\MysqlConnection\ConnectionInterface $connection) { return $connection->query('update users set name = "Tim" where id = 3'); }) ->then(function () { echo 'OK'; }, function (\Throwable $throwable) { echo $throwable->getMessage(); }); $connection->quit();
用法
工厂
工厂的主要作用 - 通过包装 Factory
创建 ConnectionInterface
createConnection
使用 延迟连接 创建连接,以供未来的操作使用。
$factory = new \Nstwf\MysqlConnection\Factory\ConnectionFactory(new \React\MySQL\Factory()); $connection = $factory->createConnection('localhost:3306');
ConnectionInterface
这是原始 ConnectionInterface
的包装器。
目前主要区别 - 包装器不支持事件发射器方法
query
transaction
可以使用 transaction(callable $callable): PromiseInterface
方法执行事务。
$connection ->transaction(function (\Nstwf\MysqlConnection\ConnectionInterface $connection) { return $connection->query('update users set name = "Tim" where id = 3'); }) ->then(function () { echo 'OK'; }, function (\Throwable $throwable) { echo $throwable->getMessage(); });
等于
$connection ->query("BEGIN") ->then( fn() => $connection->query("COMMIT"), function (\Throwable $throwable) use ($connection) { return $connection->query("ROLLBACK") ->then(fn() => $throwable); } );
begin
可以使用 begin(): PromiseInterface
方法开始事务。
$connection ->begin() ->then(function () { echo 'Begin'; }, function (\Throwable $throwable) { echo $throwable->getMessage(); });
等于
SQL 不区分大小写
$connection->query("BEGIN"); // or $connection->query("START TRANSACTION");
commit
可以使用 commit(): PromiseInterface
方法提交事务。
$connection ->commit() ->then(function () use ($connection) { echo 'Commit'; }, function (\Throwable $throwable) { echo $throwable->getMessage(); });
等于
SQL 不区分大小写
$connection->query("COMMIT");
rollback
可以使用 rollback(): PromiseInterface
方法回滚事务。
$connection ->rollback() ->then(function () use ($connection) { echo 'Rollback'; }, function (\Throwable $throwable) { echo $throwable->getMessage(); });
等于
SQL 不区分大小写
$connection->query("ROLLBACK");
ping
close
quit
安装
推荐通过 Composer 安装此库。 初识 Composer?
此项目遵循 SemVer。这将安装最新支持的版本
composer require nstwf/mysql-connection
有关版本升级的详细信息,请参阅 CHANGELOG
强烈建议使用 PHP 8+ * 为此项目。
测试
要运行测试套件,您首先需要克隆此存储库,然后通过 Composer 安装所有依赖项
composer install
要运行测试套件,请转到项目根目录并运行
vendor/bin/phpunit
许可证
MIT,请参阅 LICENSE 文件。