phputil / pdowrapper
一个有用的PDO包装器。
1.1.0
2020-03-23 22:57 UTC
Requires
- php: >=5.2.0
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-09-24 08:35:42 UTC
README
一个有用的PDO包装器。
类
安装
composer require phputil/pdowrapper
示例 1
使用 PDOBuilder
创建 PDO
并使用 PDOWrapper
计算行数。
<?php require_once 'vendor/autoload.php'; use \phputil\PDOBuilder; use \phputil\PDOWrapper; $pdo = PDOBuilder::with() ->dsn( 'mysql:dbname=mydb;host=127.0.0.1;' ) ->username( 'myuser' ) ->password( 'mypass' ) ->modeException() ->persistent() ->mySqlUTF8() ->build(); $pdoW = new PDOWrapper( $pdo ); echo 'Table "customer" has ', $pdoW->countRows( 'customer' ), ' rows.'; ?>
示例 2
按 id 删除
$id = $_GET[ 'id' ]; // ... <-- validate $id here $deleted = $pdoW->deleteWithId( $id, 'customer' ); echo 'Deleted ', $deleted, ' rows.';
示例 3
分页查询
$limit = $_GET[ 'limit' ]; $offset = $_GET[ 'offset' ]; // ... <-- validate $limit and $offset here // makeLimitOffset returns a SQL clause depending of the used database. // Currently supports MySQL, PostgreSQL, SQLite, HSQLDB, H2, Firebird, MS SQL Server, // or an ANSI SQL 2008 database. $pdoStatement = $pdo->execute( 'SELECT name FROM customer', $pdoW->makeLimitOffset( $limit, $offset ) ); echo 'Showing customers from ', $limit, ' to ', $offset, '<br />'; foreach ( $pdoStatement as $customer ) { echo $customer[ 'name' ], '<br />'; }
示例 4
查询对象
class User { private $id; private $name; function __construct( $id = 0, $name = '' ) { $this->id = $id; $this->name = $name; } function getId() { return $this->id; } function getName() { return $this->name; } } class UserRepositoryInRelationalDatabase { private $pdoW; function __construct( PDOWrapper $pdoW ) { $this->pdoW = $pdoW; } /** * Return all the users, considering a limit and an offset. * @return array of User */ function allUsers( $limit = 0, $offset = 0 ) { // throw // Paginated query $sql = 'SELECT * FROM user' . $this->pdoW->makeLimitOffset( $limit, $offset ); // Call rowToUser to convert each row to a User return $this->pdoW->queryObjects( array( $this, 'rowToUser' ), $sql ); } /** * Converts a row into a User. * @return User */ function rowToUser( array $row ) { return new User( $row[ 'id' ], $row[ 'name' ] ); } } $limit = $_GET[ 'limit' ]; $offset = $_GET[ 'offset' ]; // ... <-- validate $limit and $offset here $repository = new UserRepositoryInRelationalDatabase( $pdoW ); $users = $repository->allUsers( $limit, $offset ); foreach ( $users as $u ) { echo 'Name: ', $u->getName(), '<br />'; }
开发
克隆仓库后,运行 composer install
以安装依赖项。
如何运行测试用例
./vendor/bin/phpunit tests