pdo-factory / pdo-factory
使用外部配置文件中的凭据创建 PDO 对象的工厂类
Requires
- respect/validation: ^1.1
- webmozart/path-util: ^2.3.0
Requires (Dev)
- phpunit/phpunit: ^7.3@dev
This package is not auto-updated.
Last update: 2024-09-29 06:25:36 UTC
README
概述
PHP 脚本
<?php $pdoFactory = new PdoFactory('etc/databases.ini'); $pdo = $pdoFactory->createPDO('server1'); $pdo->prepare('select * from table1'); ...
数据库配置文件 etc/databases.ini
[server1] driver=pgsql host=localhost dbname=db username=user password='secret password'
概览
pdo-factory 允许您将数据库连接信息存储在代码库之外单独的文件中,包括用户名和密码。由于它们是单独的文件,因此可以将其从版本控制中排除,并且可以针对开发、测试或生产使用不同的连接信息。
配置格式简单,直接与 PDO 驱动程序支持的配置选项相关。您还可以指定可以分配给连接的 PDO 属性。
该库也是框架无关的,这意味着您可以在任何项目中实现它,无论大小。
安装
要安装,只需执行常规操作
$ composer require pdo-factory/pdo-factory
用法
以下解释了 API 以及如何使用该库。
构造函数
public function __construct(string $source = 'etc/pdofactory.ini')
构造函数接受一个参数,即存储所有连接信息的配置文件路径。如果提供的是相对路径,则库将尝试在脚本的路径中定位该文件,如果找不到,将重复向上遍历目录树,直到找到匹配的配置文件。例如,如果指定的路径是 etc/database.ini,而 PHP 脚本的路径是 /www/project/www/index.php,那么 pdo-factory 将使用以下优先顺序进行搜索,直到找到匹配的文件
/www/project/www/etc/database.ini/www/project/etc/database.ini/www/etc/database.ini/etc/database.ini
这非常有用,如果您希望每个项目都有特定的配置文件,可以覆盖更通用的配置文件。这也意味着如果您将项目代码放在不同的位置,您不需要更改配置文件的路径(即它们可以在项目中是相对的)。
一种常见的模式是在项目目录下创建一个 etc 目录,并将您的 pdo-factory 配置文件放在那里。然后按如下方式调用 pdo-factory 的构造函数
$pdoFactory = new PdoFactory('etc/database.ini');
如果您根本不提供路径
$pdoFactory = new PdoFactory();
则默认路径为 etc/pdofactory.ini
配置文件格式
配置文件中可用的配置参数取决于您使用的 PDO 驱动程序。为了方便起见,以下链接到所有受支持的 PDO 数据库驱动程序的特定参数
要指定参数,您可以选择编码。目前支持 Microsoft INI 文件格式和 JSON 格式。该库是模块化的,因此您可以添加自己的编码格式,例如 YAML、.env 以及适合您项目的任何其他格式。
INI 文件
以下是一个使用 INI 格式配置的示例配置文件,用于 PostgreSQL 数据库
[server1] driver=pgsql host=localhost dbname=db username=user password=pass attribute[PDO::ATTR_TIMEOUT]=30 attribute[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION
JSON 文件
以下是一个使用 JSON 格式配置的相同示例配置文件
{
"server1": {
"driver": "pgsql",
"host": "localhost",
"dbname": "db",
"username": "user",
"password": "pass",
"attribute": {
"PDO::ATTR_TIMEOUT": 30,
"PDO::ATTR_ERRMODE": "PDO::ERRMODE_EXCEPTION"
}
}
}
贡献
最欢迎通过 Github 的拉取请求进行贡献。以下是一个现有功能缺失列表,其中大部分都很容易添加。
待办事项
- 添加以下驱动程序支持
- Oracle
- Mysql/MariaDB
- MSSQL (DBLIB)
- 添加以下编码支持
- YAML
- .env
- 进一步改进单元测试
许可
版权 (c) 2018 Damien Clark
本软件受Apache License 2.0(以下简称“许可”)许可;除非您遵守许可,否则不得使用此文件。您可以在以下地址获取许可副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可下分发的软件是以“现状”为基础分发的,不提供任何形式的明示或暗示担保。有关许可的权限和限制的具体语言,请参阅许可。