slaxweb / config
SlaxWeb 框架的配置组件
Requires
- php: >=7.0.0
Requires (Dev)
- behat/gherkin: ~4.4
- codeception/codeception: dev-master
- desperado/xml-bundle: ~0.1
Suggests
- desperado/xml-bundle: If you would like to use XML config files, you have to install desperado/xml-bundle package, version 0.1.x
- pimple/pimple: Make use of available providers for Pimple version 3.0.x
- symfony/yaml: If you would like to use YAML config files, you have to install symfony/yaml package, version 3.0.x
This package is not auto-updated.
Last update: 2024-09-14 18:58:38 UTC
README
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 之前,在您的容器中设置了 configResourceLocation 和 configHandler 属性。要使用提供者,只需将其注册到您的容器中即可
<?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");