mr-luke / configuration
点表示法数组主机配置包。
Requires
- php: >=7.1
- ext-json: *
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0
README
此包提供支持点表示法访问和模式验证的数组主机(包装)包。
入门
良好的软件开发遵循许多模式和架构。我们设计依赖于许多其他部分的事物。其中一些是结构良好的对象,但很多时候我们需要一些配置。我们通常使用数组作为我们的配置主机,但由于一个原因——数组不是对象,所以它不能遵循任何模式,因此它会产生大量意外的副作用。但如果它可以...
在我的工作中,我开发了一个简单的包装工具,帮助我处理具有模式敏感的数组,我决定将其制作成一个包。希望你会喜欢它!
安装
要通过composer安装,只需在您的composer.json文件中添加以下内容,然后运行composer update
{ "require": { "mr-luke/configuration": "~1.0" } }
或者使用以下命令
composer require "mr-luke/configuration"
使用
让我们转到Schema
类。它是一个具有一个接口方法的验证工具
public function check(array $insert, bool $throw = true): bool
$insert
- 这是您需要验证的数组$throw
- 此选项更改验证的行为
默认情况下,如果$insert
不遵循模式,则check
方法会抛出InvalidArgumentException
。
第一步
创建您的Schema数组
$instruction = [ 'first_key' => 'required|string', 'second_key' => 'nullable|integer', 'third_key' => 'required|float', ];
可用规则
required
- 给定的键不能为空nullable
- 给定的键可以为nullboolean
- 给定的键必须是布尔类型float
- 给定的键必须是浮点类型integer
- 给定的键必须是整数类型string
- 给定的键必须是字符串,不能是其他类型
第二步
创建Mrluke\Configuration\Schema
的新实例
$schema = new Schema(array $instruction);
注意!从v1.2.0开始,您可以通过静态方法createFromFile(string $path, bool $json = false)
创建Schema
。
第三步
使用Schema
作为依赖项创建Mrluke\Configuration\Host
的新实例,您的$configArray
会自动验证。
$host = new Host($configArray, $schema);
如果您的$configArray
不遵循给定的Schema
,您将得到InvalidArgumentException
。您也可以使用没有Schema
的Host
,因为Mrluke\Configuration\Host
有一个可选参数。
您的配置已被包装!
现在您有权访问Host
的方法
/** * Return given key from array. * * @param string $key * @param mixed $default * @return mixed */ public function get(string $key, $default = null)
您的key
可以遵循dot notation
来访问嵌套的keys
$host->get('mysql.database', 'my_db');
默认情况下,如果key
不存在,Host
返回null
。您也可以使用魔法getter来访问配置
$host->mysql;
您可以使用它来检查给定的键是否存在
/** * Determine if given key is present. * * @param string $key * @return bool */ public function has(string $key): bool
计划
请随意贡献,因为我知道还有一些事情需要改进。目前
- 支持嵌套Schema
- 支持新的验证规则
- 新的Schema文件格式