lokhman/silex-config

Silex 2.0+ 轻量级框架配置服务提供商

2.0.2 2017-03-08 11:55 UTC

This package is auto-updated.

Last update: 2024-09-16 21:27:24 UTC


README

Build Status StyleCI codecov Downloads Packagist License

Silex 2.0+ 微型框架提供轻量级配置服务。

本项目是 silex-tools 库的一部分。

安装

您可以使用 Composer 安装 silex-config

composer require lokhman/silex-config

文档

简单轻量级的配置提供程序,使用 JSON 文件来管理应用程序配置。库支持通过设置全局环境变量来管理不同环境。

use Lokhman\Silex\Provider\ConfigServiceProvider;

$app->register(new ConfigServiceProvider(), [
    'config.dir' => __DIR__ . '/../app/config',
]);

文件结构

首先,在您的应用程序目录中创建一个 config 文件夹,并为预期的每个环境(默认为 local)添加配置 JSON 文件。

/
  app/
    config/
      dev.json
      local.json
      prod.json
      staging.json
    logs/
  src/
  tests/
  vendor/
  web/
    index.php
  composer.json
  ...

配置文件

接下来,将所有默认配置添加到配置文件中,例如。

{
    "env": "%__ENV__%",
    "debug": true,
    "dbs.options": {
        "default": {
            "driver": "pdo_mysql",
            "host": "localhost",
            "dbname": "database",
            "user": "root",
            "password": "",
            "charset": "utf8"
        }
    },
    "any": {
        "other": "constant"
    }
}

注册

现在在您的 Silex 应用程序中注册服务提供商

use Lokhman\Silex\Provider as ToolsProviders;

$app->register(new ToolsProviders\ConfigServiceProvider(), [
    'config.dir' => __DIR__ . '/../app/config',
]);

config.dir 参数指向包含 JSON 文件的配置文件夹路径。

全局环境变量

最后,您可以设置您的 Web 服务器以支持不同的部署环境。为此,您必须设置一个全局环境变量。

nginx + PHP-FPM

fastcgi_param SILEX_ENV prod

Apache

SetEnv SILEX_ENV prod

CLI

$ SILEX_ENV=prod bash -c "php bin/console migrations:status"

如果您与 ConfigServiceProvider 一起使用 控制台应用程序,您可以将 --env(简写为 -e)选项传递给所有已注册的命令。

$ php bin/console migrations:status --env=prod

参数

ConfigServiceProvider 支持以下参数

默认情况下,服务提供商嵌入令牌 __DIR____ENV__,以及所有 PHP 环境变量(例如 REMOTE_ADDRSERVER_NAME 等)。

动态令牌

您可以使用 $params 属性在 JSON 文件中动态定义令牌。

local.json
{
    "$params": {
        "SECRET": "3ecd45ff71c87269569e682f2f6b2ec4"
    },
    "settings": {
        "prop1": "%SECRET%",
        "prop2": "%secret%",
        "prop3": "%SeCrEt%"
    }
}

注意:所有令牌均不区分大小写。

扩展

您可以使用根属性 $extends 简单地扩展 JSON 配置(将一个 JSON 文件包含到另一个文件中),该属性指向要扩展的文件(可以省略文件扩展名)。例如。

local.json
{
    "env": "%__ENV__%",
    "debug": true,
    "locale": "en"
}

prod.json
{
    "$extends": "local",
    "debug": false
}

许可证

库在 MIT 许可证下可用。包含的 LICENSE 文件详细说明了此内容。