cristianp6 / pdo-service-provider
为 Silex 提供的 PDO 数据库服务提供商,支持事务嵌套
v0.8.0
2015-08-26 14:00 UTC
Requires
- silex/silex: ~1.1
- symfony/options-resolver: ~2.3
Requires (Dev)
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2024-09-14 18:31:28 UTC
README
一个简单的 Silex PDO 服务提供商
安装
将此包添加到 Composer 依赖配置中
php composer.phar require "cristianp6/pdo-silex-provider=~0.8"
用法
- 仅配置一个数据库
使用 PdoServiceProvider silex 提供者
use Csanquer\Silex\PdoServiceProvider\Provider\PdoServiceProvider; use Silex\Application; $app = new Application(); $app->register( // you can customize services and options prefix with the provider first argument (default = 'pdo') new PdoServiceProvider('pdo'), array( 'pdo.server' => array( // PDO driver to use among : mysql, pgsql , oracle, mssql, sqlite, dblib 'driver' => 'mysql', 'host' => 'mysql', 'dbname' => 'rfactori', 'port' => 3306, 'user' => 'ger', 'password' => 'GER', ), // optional PDO attributes used in PDO constructor 4th argument driver_options // some PDO attributes can be used only as PDO driver_options // see https://php.ac.cn/manual/fr/pdo.construct.php 'pdo.options' => array( \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'" ), // optional PDO attributes set with PDO::setAttribute // see https://php.ac.cn/manual/fr/pdo.setattribute.php 'pdo.attributes' => array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ), ) ); // get PDO connection $pdo = $app['pdo'];
- 配置多个数据库
use Csanquer\Silex\PdoServiceProvider\Provider\PdoServiceProvider; use Silex\Application; $app = new Application(); $app->register( // use custom prefix for service and options // first PDO connection new PdoServiceProvider('pdo.db1'), array( // use previous custom prefix pdo.db1 'pdo.db1.server' => array( // PDO driver to use among : mysql, pgsql , oracle, mssql, sqlite, dblib 'driver' => 'mysql', 'host' => '127.0.0.1', 'dbname' => 'db1', 'port' => 3306, 'user' => 'username', 'password' => 'password', ), // optional PDO attributes used in PDO constructor 4th argument driver_options 'pdo.db1.options' => array( \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'" ), // optional PDO attributes set with PDO::setAttribute 'pdo.db1.attributes' => array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ), ) ); $app->register( // second PDO connection new PdoServiceProvider('pdo.db2'), array( 'pdo.db2.server' => array( 'driver' => 'sqlite', 'path' => 'var/db/db2.sqlite', ), ) ); // get PDO connections $db1Pdo = $app['pdo.db1']; $db2Pdo = $app['pdo.db2'];
事务用法
- 如何使用事务的基本示例
$sth = $app['pdo']->prepare( $sql ); try { $success = $app['pdo']->transaction(function() use ($sth) { return $sth->execute(); }); if($success) { //committed } else { //rollback } } catch(\PDOExecption $e) { $app['pdo']->rollBack(); $result = $e->getMessage(); }