slaxweb/config

SlaxWeb 框架的配置组件

0.3.0 2017-04-17 14:21 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:38 UTC


README

Build Status

SlaxWeb\Framework 的 Config 组件负责从多个来源加载和解析配置选项。目前仅支持基于文件的资源,并且可以以 3 种格式存在,PHP、XML 或 YAML。

需求

  • PHP 7.0+
  • desperado/xml-bundle 0.1.* 包 - 用于 XML 配置处理
  • symfony/yaml 3.0.* 包 - 用于 YAML 配置处理
  • pimple/pimple 3.0.* 包 - 使用提供的服务提供者

安装

最简单的安装方式是通过 composer,只需在您的 composer.json 文件中要求该包

{
    "require": {
        "slaxweb/config": "~0.1"
    }
}

这样就可以开始使用 Config 组件了,使用 PHP 配置处理。如果您想使用 XML 或 YAML 配置提供者,您需要使用 composer 安装它们各自所需的包(见需求)。

使用

Config 组件提供了一个用于简化实例化的 Factory 类。要开始使用,只需调用 Factory 的 init 静态方法,传入您要使用的配置处理器的正确常量以及您配置文件的位置。配置处理器常量

  • \SlaxWeb\Config\Container::PHP_CONFIG_HANDLER
  • \SlaxWeb\Config\Container::XML_CONFIG_HANDLER
  • \SlaxWeb\Config\Container::YAML_CONFIG_HANDLER
$config = \SlaxWeb\Config\Factory::init(
    \SlaxWeb\Config\Container::PHP_CONFIG_HANDLER,
    "/path/to/configuration/"
);

工厂将自动实例化正确的配置处理器,并将其注入到 Config 类中,同时注入您的配置资源位置。

操作配置

Container 类实现了 ArrayAccess 接口,必须这样使用。检索、设置、删除和检查存在性,就像在数组上操作一样。对于加载新的配置资源,提供了 load 方法。示例 PHP 配置文件

<?php
$configuration["foo"] = "bar";
$configuration["baz"] = true;

PHP 配置文件需要 $configuration 数组,并且所有配置项都必须设置到它中。

要加载配置文件,只需将其放置在您的 /path/to/configuration 目录下,并使用文件名调用 load 方法

$config->load("myconfig.php");

配置文件加载后,您可以对 $config 执行操作,就像它是一个简单的数组一样

if (isset($config["foo"])) {
    $foo = $config["foo"];
}
$config["foo"] = "baz";
unset($config["baz"]);

使用提供者

如果您使用的是 Pimple\Pimple 依赖注入容器,可以使用提供的 Service Provider。确保在使用 config.service 之前,在您的容器中设置了 configResourceLocationconfigHandler 属性。要使用提供者,只需将其注册到您的容器中即可

<?php
use Pimple\Container;

$container = new Container;

$container->register(new \SlaxWeb\Config\Service\Provider);

$container["configHandler"] = \SlaxWeb\Config\Container::PHP_CONFIG_HANDLER;
$container["configResourceLocation"] = "/path/to/configuration";

$container["service.provider"]->load("myconfig.php");