germania-kg/databases

1.0.5 2022-03-30 10:03 UTC

This package is auto-updated.

Last update: 2024-08-29 04:25:42 UTC


README

Pimple 服务提供者 用于创建 PDO 处理器。

Packagist PHP version Build Status Scrutinizer Code Quality Code Coverage Build Status

使用 Composer 安装

$ composer require germania-kg/databases

设置

<?php
use Germania\Databases\DatabasesServiceProvider;

// A. Use with Slim or Pimple
$app = new \Slim\App;
$dic = $app->getContainer();
$dic = new Pimple\Container;

// B. Register Service Provider.
// see https://pimple.symfony.com/#extending-a-container
// Optionally pass custom PDO error mode
$dic->register( new DatabasesServiceProvider );
$dic->register( new DatabasesServiceProvider( \PDO::ERRMODE_EXCEPTION ) );

服务

PDO.Factory

用于 PDO 处理器的工厂调用。只需准备好一些数据库凭证。

<?php
$db = [
	'dsn' => "mysql:host=localhost;dbname=MyDatabase;charset=utf8",
	'user' => "username",
	'pass' => "secret"
];

// Grab Factory
$pdo_factory = $dic['PDO.Factory'];

// Create handler
$pdo = $pdo_factory( $db );
$pdo = $pdo_factory( (object) $db ); // StdClass objects
$pdo = $pdo_factory( new \ArrayObject($db) ); // ArrayAccess instance

异常

工厂接受一个 数组ArrayAccess 实例或一个 StdClass 对象。如果传入的工厂参数不匹配以上任何一种,将抛出 \InvalidArgumentException 异常。

PDO.ErrorMode

默认错误模式已在服务提供者实例化时设置。您可以在运行时通过扩展服务定义来覆盖它。

$dic->extend(PDO.ErrorMode', function($default_error_mode, $dic) {
    return \PDO::ERRMODE_SILENT;
});

PDO.Options

此服务返回在 PDO 处理器实例化时要使用的 PDO 选项。默认情况下,这是一个包含上述 PDO.ErrorMode 的数组。

$pdo_options = $dic['PDO.Options'];

覆盖

只需扩展服务定义。有关有效选项,请参阅 PHP 手册:PDO 类

$dic->extend('PDO.Options', function($default_options, $dic) {
    return array_merge( $default_options, array(
    	\PDO::ATTR_ERRMODE => \PDO::ERRMODE_SILENT
    	// custom values here
    ));
});

开发

$ git clone https://github.com/GermaniaKG/Databases.git
$ cd Databases
$ composer install

单元测试

您可以将 phpunit.xml.dist 复制到 phpunit.xml 并根据您的需求进行修改,或者保持原样。运行 PhpUnit 测试或 composer 脚本,例如

$ composer test
# or
$ vendor/bin/phpunit