ad7six / dsn
此包已 废弃 并不再维护。未建议替代包。
解析和生成服务 DSN 的实用程序
0.4.0
2015-03-28 07:40 UTC
Requires
- php: >=5.4.0
Suggests
- josegonzalez/dotenv: 0.1.*
This package is not auto-updated.
Last update: 2022-02-01 12:30:17 UTC
README
解析和生成服务 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 的行为 - 使用包装实现