ama-team/yamligniter

用于配置 CodeIgniter 2/3 的简单工具(使用 YAML)

0.1.1 2017-03-17 13:26 UTC

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 请求、如果没有任何反应,请联系维护者。

自尊徽章酒窖

主分支

CircleCI/master Coveralls/master CodeClimate Packagist Packagist

开发分支

CircleCI/dev Coveralls/dev