ad7six/dsn

此包已 废弃 并不再维护。未建议替代包。

解析和生成服务 DSN 的实用程序

0.4.0 2015-03-28 07:40 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:30:17 UTC


README

Build Status Coverage Status

解析和生成服务 DSN 的实用程序

DSN 是什么?

数据源名称(DSN)是一个字符串,它定义了如何连接到服务。由于它是一个字符串,它是可移植的,不依赖于语言或实现,任何能够解析它的东西都可以知道如何连接到它指向的服务。

此存储库做什么?

此存储库仅提供将 DSN 字符串转换为数组以及反向转换的方法。

包装类?

当使用包装类时,此存储库提供了一个特定消费者期望的格式的数组。例如,CakePHP 包装类提供框架理解给定 DSN 字符串格式的数组。

基本用法

主 dsn 类实现了一个解析函数,该函数返回一个 dsn 实例

use \AD7six\Dsn\Dsn;

$url = $_ENV['SOME_SERVICE_URL'];
$dsn = Dsn::parse($url);

返回对象的类取决于服务 URL 的方案,例如

// $dsn is an instance of \AD7six\Dsn\Db\MysqlDsn;
$dsn = Dsn::parse('mysql://host/dbname');

// $dsn is an instance of \AD7six\Dsn\Db\SqliteDsn;
$dsn = Dsn::parse('sqlite:///path/to/name.db');

对于未知方案 - 返回调用类的实例。这也意味着可以通过使用更具体的类来获得更具体的实例

// $dsn is an instance of \AD7six\Dsn\Dsn;
$dsn = Dsn::parse('newdb://host/dbname');

// $dsn is an instance of \AD7six\Dsn\DbDsn;
$dsn = DbDsn::parse('newdb://host/dbname');

在所有上述情况下,返回的实例是“原始”dsn 数据

// $dsn is an instance of \AD7six\Dsn\Db\MysqlDsn;
$dsn = Dsn::parse('mysql://host/dbname');

$dsn->toArray();
[
	'scheme' => 'mysql',
	'host' => 'host',
	'port' => 3306,
	'database' => 'dbname'
]

如果需要修改原始 dsn 的行为 - 使用包装实现

参考

12 factor applications