mr-luke/configuration

点表示法数组主机配置包。

1.3.3 2023-05-11 10:00 UTC

This package is auto-updated.

Last update: 2024-09-12 14:50:14 UTC


README

Latest Stable Version Total Downloads License

Tests Workflow Quality Gate Status Security Rating Reliability Rating

此包提供支持点表示法访问和模式验证的数组主机(包装)包。

入门

良好的软件开发遵循许多模式和架构。我们设计依赖于许多其他部分的事物。其中一些是结构良好的对象,但很多时候我们需要一些配置。我们通常使用数组作为我们的配置主机,但由于一个原因——数组不是对象,所以它不能遵循任何模式,因此它会产生大量意外的副作用。但如果它可以...

在我的工作中,我开发了一个简单的包装工具,帮助我处理具有模式敏感的数组,我决定将其制作成一个包。希望你会喜欢它!

安装

要通过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 - 给定的键可以为null
  • boolean - 给定的键必须是布尔类型
  • 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。您也可以使用没有SchemaHost,因为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文件格式