assertis/config-lib

此软件包已被放弃,不再维护。未建议替代软件包。

简单的配置库


README

设计

配置库允许您从不同的来源将配置加载到应用程序中,它提供了在开发者环境中验证配置的方法。

我们提供了5种基本配置类型。

  • Assertis\Configuration\Drivers\SourceDriver:简单驱动,您可以在构造函数中将配置数组设置到其中。

  • Assertis\Configuration\Drivers\DatabaseDriver:使用PDO连接从数据库中获取配置的驱动。此驱动返回LazyConfiguration

  • Assertis\Configuration\Drivers\File\IniDriver:从.ini文件提供的配置

  • Assertis\Configuration\Drivers\File\JsonDriver:从.json文件提供的配置

  • Assertis\Configuration\Drivers\File\PhpDriver:从.php文件提供的配置。文件应返回数组

  • Assertis\Configuration\Drivers\File\YmlDriver:从.yml文件提供的配置。文件应返回数组

  • Assertis\Configuration\Drivers\File\XmlDriver:从.xml文件提供的配置。文件应返回包含配置的数组。例如:

<?php
  return [
    'key' => 'value'
  ];
 ?>

我们以两种类型的对象返回配置

  • Assertis\Configuration\Collection\ConfigurationArray是具有一些额外方法的数组类型对象。更多详细信息请见下文。

  • Assertis\Configuration\Collection\LazyConfiguration是简单的数组类型对象,但有许多限制。基本上,您只能使用get方法,其他方法将抛出Exception

库还提供了Assertis\Configuration\ConfigurationFactory以方便地创建配置。

额外功能

  • 如果存在,配置将加载“common”文件。文件扩展名取决于驱动类型。如果我们使用IniDriver进行测试环境,则如果存在,将加载common.ini

  • 环境从$_SERVER['ENV']getenv('ENV')读取

  • 当环境为默认(开发)或测试时,将测试配置结构

  • 您可以使用路径获取值,例如:rdis.db.user

  • 当您请求值是数组时的键,此值将更改为Assertis\Configuration\Collection\ConfigurationArray

  • 您可以轻松地添加额外的驱动

安装

要安装此库,请将以下内容添加到您的composer.json文件中,并运行composer update

  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/assertis/config-lib"
    }
  ],
  "require": {
    "assertis/config-lib": "dev-master"
  }

使用

要使用此库,请将以下内容添加到您的Silex应用程序中

$app->register(new ConfigurationProvider(), [
    'config.driver' => new IniDriver($app['dir.root'] . '/configs'),
    'config.validator' => $app['validator'],
    'config.validator.constraints' => null
]);

将新租户添加到配置

  1. 首先,您的服务应该有一些称为租户模式的东西。
  2. 将您的常规租户体放入config/schema/tenant.json中,例如。
{
  "database": {
    "order": {
      "dsn": "mysql:host=127.0.0.1;dbname=",
      "username": "root",
      "password": ""
    }
  },
  "nlc": "",
  "barcode_key": "",
  "issuer_id": ""
}
  1. 现在在您的服务中,您应该能够将租户添加到特定的配置文件中
php vendor/assertis/config-lib/src/Scripts/AddTenant.php {tenantName} {configFileName}  [tenantSchemaFile]

如果tenantSchemaFile与config/schema/tenant.json在不同的本地化中,请将其作为最后一个参数提供。例如使用方法:

php vendor/assertis/config-lib/src/Scripts/AddTenant.php hex-qa-b2b stage.json