jasonterando / config-validator
收集和验证配置信息的实用程序
Requires
- php: ^5.6 || ^7.0
- mustangostang/spyc: ^0.6.2
Requires (Dev)
- phpunit/phpunit: 7.0.*
This package is not auto-updated.
Last update: 2024-09-29 05:41:54 UTC
README
概述
这是一个实现了自动加载的实用程序,它提供了一种机制来确保部署的配置文件符合任何依赖项的要求。它应在开发或部署时执行。
应用程序及其/或每个依赖项都定义了一个配置定义文件。当配置验证实用程序执行时,该实用程序将应用程序配置与包含在依赖项中的配置定义进行比较。
目前,配置定义文件位于使用Autoload PSR-4和Classmap目录中包含的目录。应用程序配置文件使用Zend的模块管理器约定(module_listener_options/module_paths)检索。预计将来将添加额外的机制来检索配置定义和应用程序配置。
安装和使用
安装
要使用此
- 运行
composer require jasonterando/configuration-validator
- 将composer脚本行添加到composer.json中
{
"scripts": {
"config-validate": "ConfigurationValidator\\Scripts::ConfigValidate",
"config-save-template": "ConfigurationValidator\\Scripts::ConfigSaveTemplate"
}
}
使用方法
从应用程序的主要目录中,运行composer config-validate
以运行验证。如果一切正常,将显示成功消息,退出码为零。
如果验证失败,由于缺少或无效的配置条目,将显示警告,退出码为-2。
如果由于致命错误无法运行验证,将显示异常消息,退出码为-1。
如果您需要从头开始创建配置验证文件,可以运行composer config-save-template
,这将创建一个基于应用程序当前配置的定义文件,您可以根据需要对其进行细化并包含到您的模块/库中。请注意,此文件将包括所有应用程序配置,因此您可能需要删除不需要特定模块的条目,并且在将文件移动到模块文件夹之前设置一些类型。
上面显示的两个Composer脚本都可以与debug
参数一起运行,以提供有关正在访问的文件的更多信息。
CI/CD集成
在部署过程中,在安装/更新配置文件后,运行composer config-validate
以验证配置。任何非零退出码都应被视为失败并停止部署。
配置定义
配置定义文件格式
配置定义文件是YAML格式。它们可以命名为config-definition.yaml
或config-definition.yml
,并位于Autoload项目的composer.json中定义为PSR-4或Classmap路径的任何目录中。例如
service1:
endpoint: url
credentials:
key: string
secret: string
options:
timeout:
type: integer
required: false
logo: file
logs: directory
copyright
树中的每个叶子节点对应一个配置项,位于其父节点的层次结构中。配置项有两个属性,类型和必需。默认情况下,配置项可以是任何类型,并且是必需的。
在上面的示例中,最后的配置项“版权”可以是任何值,但必须在应用程序配置中存在。如果存在“超时”属性,则不需要在应用程序配置文件中存在,但如果存在,则必须是一个整数(整数)。
有两个条目,“logo”和“logs”,分别必须是一个现有文件和一个目录。请注意,此检查是在测试运行的用户上下文中进行的,这可能与应用程序本身运行的上下文不同,因此这不是一个100%万无一失的检查。
对于“service1”,其端点配置项是必需的,并且必须是一个有效的URL。“key”和“secret”配置项必须定义在“凭证”下,并且必须是非空字符串。
对于这个示例,一个有效的配置文件可能看起来像这样
<?php
return [
'service1' => [
'endpoint' => 'https://foo.com/service1',
'credentials' => [
'key' => 'abc',
'secret' => 'def'
]
],
'options' => [
'copyright' => '(c) Me 2018',
'logo' => '/var/shared/company.jpg',
'logs' => '/var/log/foo',
]
]
配置定义项类型
以下类型目前受支持
- any:可以是任何值,包括空值
- string:可以是PHP能将其渲染为字符串的任何内容,但不能为空
- number:任何数值
- integer:任何整数(正数或负数),但没有小数部分
- boolean:任何布尔值(true/value,y/n,yes/no)
- url:任何结构良好的URL
- directory:一个现有且可访问的目录
- file:一个现有且可访问的文件
开发
单元测试
可以通过在库的主要文件夹中运行 vendor/bin/phpunit
来执行单元测试,包括代码覆盖率。
待办事项
- 添加对PSR-0的支持
- 添加对其他框架的应用配置文件存储(Symphony?)的支持
- 为Autoload和应用配置文件等添加更积极的定位和/或配置设置(某个地方)