ama-team / yamligniter
用于配置 CodeIgniter 2/3 的简单工具(使用 YAML)
Requires
- symfony/yaml: ^3.2
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 19:42:27 UTC
README
此仓库包含一个简单的工具,用于使用 YAML 配置启动 CodeIgniter 项目。
动机
有两种类型的配置:声明式和执行式(因此它基本上是一个提供配置给应用程序的大函数,无论是通过返回值还是副作用)。虽然执行式配置(由 CodeIgniter 使用)给予最终用户无限自由(您可以在运行时计算值),但它缺乏声明式配置易于机器处理的能力,并限制了自动化的自由。例如 YAML 文件这样的声明式配置是静态的,但可以用任何语言编写的脚本来轻松创建,并为自动化诸如持续部署和自动化环境创建(例如功能分支)等事物提供了巨大好处。
由于我们在从零开始部署我们的 CodeIgniter 项目时遇到了一些麻烦,所以我决定帮助 CodeIgniter 将配置切换到 YAML。
安装
只是常规的事情
composer require ama-team/yamligniter
使用
CodeIgniter 通过让用户在用户维护的脚本中填写一些变量来获取其配置。让我们利用这一点
// application/config/config.php extract(AmaTeam\YamlIgniter::config(__DIR__ . '/config.yml'));
// application/config/database.php extract(AmaTeam\YamlIgniter::database(__DIR__ . '/database.yml');
现在您还可以使用基于环境的配置文件
// application/config/database.php extract(AmaTeam\YamlIgniter::database(__DIR__ . '/' . ENVIRONMENT . '/database.yml');
YamlIgniter 将获取您的配置,用默认值填充缺失的部分,然后返回完整的配置供您将来处理或提取到本地变量中。
形式
静态方法 YamlIgniter::database()
和 YamlIgniter::config()
只是类似非静态方法的包装:它们仅仅是为了简化访问而实现的。它们的实现略有不同 - ::config()
仅读取 YAML 文件,用默认值填充所有空白,并以数组形式返回,键为 config
# config.yml base_url: https://project.dev/ # results in config: base_url: 'http://project.dev/' index_page: 'index.php' uri_protocol: 'REQUEST_URI' ...
数据库方法行为不同。源配置文件应表示 database.php
结构
# database.yml query_builder: true db: default: username: johnny password: rubber database: project failover: - username: johnny password: rubber database: project hostname: failover-host.intranet
YamlIgniter 然后接收此输入并按以下方式转换
- 将根上下文与框架版本默认值合并(在当前示例中,
active_group: default
将添加到配置中) - 遍历
db
的所有条目,将每个条目与默认数据库上下文合并 - 遍历
db.*.failover
的所有条目,将每个条目与默认数据库上下文合并
因此上述示例将产生以下结果
query_builder: true active_group: default db: default: dsn: '' hostname: localhost username: johnny password: rubber database: project dbdriver: mysqli ... failover: - dsn: '' username: johnny password: rubber database: project hostname: failover-host.intranet dbdriver: mysqli ...
测试
测试是通过 Codeception 框架以及 Allure 框架 进行报告的。启动测试很简单
bin/codecept run
要获取完整的报告,请安装 Allure 命令行并使用以下命令
composer run-script test:full
贡献
分支、修复、增强、创建 pull 请求、如果没有任何反应,请联系维护者。