stk2k / power-pdo
PDO 强大且轻量级的包装器
0.1.4
2022-04-28 09:03 UTC
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^8.5.15
README
描述
PDO 强大且轻量级的包装器
特性
- 流畅查询构建器
- 支持 POPO(Plain Old Php Object) 实体类
- 支持 SQL JOIN
- PSR-3 日志记录器
如何使用
实体类
class UserEntity { public $ID; public $deleted; public $user_name; public $nickname; public $email; }
对于 MySQL
use Stk2k\PowerPDO\PowerPDO; $dsn = 'mysql:dbname=mydatabase;host=localhost'; $user = 'myuser'; $password = 'mypass'; $ppdo = new PowerPDO(new PDO($dsn, $user, $password)); or $ppdo = PowerPDO::make($dsn, $user, $password);
对于 SQLite
use Stk2k\PowerPDO\PowerPDO; $dsn = 'sqlite:/path/to/dbfile_of_sqlite'; $ppdo = new PowerPDO(new PDO($dsn)); or $ppdo = PowerPDO::make($dsn);
日志记录(PSR-3 日志记录器)
use Monolog\Logger; use Monolog\Handler\StreamHandler; // monolog $log = new Logger('name'); $log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); $ppdo = new PowerPDO(new PDO($dsn), $log); or $ppdo = PowerPDO::make($dsn)->logger($log);
SELECT
// array style $users = PowerPDO::make($dsn) ->select("ID, user_name, nickname, email") ->from("users") ->where("deleted = 0") ->getAll(); foreach($users as $u){ $uid = $u['ID']; $name = $u['user_name']; echo "[$uid]$name"; } // entity style $users = PowerPDO::make($dsn) ->select("ID, user_name, nickname, email") ->from("users") ->where("deleted = 0") ->getAll(UserEntity::class); foreach($users as $u){ $uid = $u->ID; $name = $u->user_name; echo "[$uid]$name"; }
占位符(预编译语句)
$users = PowerPDO::make($dsn) ->select("ID, user_name, nickname, email") ->from("users") ->where("nickname LIKE :nickname") ->bind(['nickname' => '%Bi%']) ->getAll();
Count
use Monolog\Logger; use Monolog\Handler\StreamHandler; $users = PowerPDO::make($dsn) ->count() ->from("users") ->where("deleted = 0") ->get();
事务
use Stk2k\PowerPDO\Transaction; use Stk2k\PowerPDO\exception\TransactionException; try{ $tr = new Transaction($pdo); $tr->begin(); // execute UPDATE/DELETE/INSERT SQL here $tr->commit(); } catch(TransactionException $ex){ $tr->rollback(); }
INSERT
// array style PowerPDO::make($dsn) ->insert() ->into("users", "ID, user_name, nickname, email") ->values( "ID" => "123", "user_name" => "hanako", "nickname" => "hana", "email" => "hanako@sample.com" ) ->execute(); // entity style $new_user = new UserEntity(); $new_user->ID = 123; $new_user->user_name = 'hanako'; $new_user->nickname = 'hana'; $new_user->email = 'hanako@sample.com'; PowerPDO::make($dsn) ->insert() ->into("users") ->values($new_user) ->execute();
UPDATE
// literal style PowerPDO::make($dsn) ->update("users") ->set("user_name", "hanako2") ->set("email", "hanako2@sample.com") ->where("ID = :ID", ['ID'=>1]) ->execute(); // array style PowerPDO::make($dsn) ->update("users") ->values([ 'user_name' => 'hanako2', 'email' => 'hanako2@sample.com', ]) ->where("ID = :ID", ['ID'=>1]) ->execute(); // entity style $new_user = new UserEntity(); $new_user->user_name = 'hanako2'; $new_user->nickname = 'hana2'; $new_user->email = 'hanako2@sample.com'; PowerPDO::make($dsn) ->update("users") ->values($new_user) ->where("ID = :ID", ['ID'=>1]) ->execute();
DELETE
use Stk2k\PowerPDO\PowerPDO; // literal style PowerPDO::make($dsn) ->delete() ->from("users") ->where("email = 'hanako2@sample.com'") ->execute(); // placeholder style PowerPDO::make($dsn) ->delete() ->from("users") ->where("email = :email",['email' => 'hanako2@sample.com']) ->execute();
要求
PHP 7.3 或更高版本
安装 stk2k/power-pdo
推荐通过 Composer 安装 stk2k/power-pdo。
composer require stk2k/power-pdo
安装后,您需要引入 Composer 的自动加载器
require 'vendor/autoload.php';
许可证
此库遵循 MIT 许可证。
作者
免责声明
此软件不提供任何保修。
我们不承担因使用此软件而产生的任何结果的责任。
请自行负责。