rstgroup / zf-external-config-module
负责从外部源获取配置的模块。
Requires
- php: ^5.6 || ^7
- zendframework/zend-modulemanager: ^2.7
- zendframework/zend-servicemanager: ^3.3
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-09-15 02:18:04 UTC
README
此模块提供从外部源加载和合并应用程序配置的逻辑和抽象。
该模块本身还没有任何外部提供者,提供者可以通过Composer安装或在您的应用程序代码中编写。
安装
使用Composer要求模块
composer require rstgroup/zf-external-config-module
下一步是将模块添加到ZF系统配置(config/application.config.php)
return [ 'modules' => [ (...), 'RstGroup\ZfExternalConfigModule', ], (...) ]
添加提供者
要从外部源加载配置,应将提供者注册到您的应用程序配置中
return [ 'rst_group' => [ 'external_config' => [ 'providers' => [ 'YourProviderService' => true, ], 'service_manager' => [ 'factories' => [ 'YourProviderService' => YourProvidersServiceFactory::class ] ] ], ] ];
模块遍历在
rst_group.external_config.providers
中定义的启用提供者,并使用内部服务管理器创建它们。
启用和禁用提供者
即使已定义,禁用的提供者也不参与最终配置的创建。
以下是如何标记定义的提供者启用或禁用的示例
return [ 'rst_group' => [ 'external_config' => [ 'providers' => [ 'EnabledProvider#1' => true, 'EnabledProvider#2' => 'true', 'EnabledProvider#3' => 'on', 'EnabledProvider#4' => 1, 'DisabledProvider#1' => false, 'DisabledProvider#2' => 'false', 'DisabledProvider#3' => 'off', 'DisabledProvider#4' => 0, ], ], ], ];
内部服务管理器
在上面的示例中,您可以查看service_manager
定义。
该模块附加到配置合并过程,因此应用程序的默认ServiceManager
尚不可用。为了保持服务管理器的功能,zf-external-config-module
创建自己的管理器!
您可以通过工厂创建服务,可以声明可调用等 - 与您通常声明服务的方式相同。
但请记住,此服务在加载和合并外部配置后结束其生命周期!
将配置传递给您的提供者
当定义您自己的提供者时,您可能需要将一些凭据或其他参数传递到提供者实例。为此 - 最好的方式是使用工厂功能,因为工厂具有(内部)服务管理器的注入!
内部服务管理器已将应用程序配置和zf-external-config-module的配置注册为服务
use Psr\Container\ContainerInterface; use \RstGroup\ZfExternalConfigModule\Config\ExternalConfigListener; final class ExampleServiceFactory { public function __invoke(ContainerInterface $container) { /* getting app's configuration */ $appConfig = $container->get( ExternalConfigListener::SERVICE_APPLICATION_CONFIG ); /* getting zf-external-config-module configuration */ $moduleConfig = $container->get( ExternalConfigListener::SERVICE_EXTERNALS_CONFIG ); (...) } }
请注意,已从应用程序配置中删除
rst_group.external_config
密钥,但您仍然可以使用模块的配置获取它。
编写您自己的提供者
外部配置提供者必须实现\RstGroup\ZfExternalConfigModule\Config\ConfigProviderInterface
并在模块和内部服务管理器中注册。这是唯一的要求!
您可以将代码存储在您自己的应用程序代码库中,但我们建议将其与社区共享并在GitHub & Composer上发布。我们将乐意将您的提供者添加到此包的suggest
提供者中!
建议的提供者
Consul KV存储:rstgroup/zf-external-config-consul-provider