phly/phly-expressive-configfactory

此软件包已被废弃,不再维护。作者建议使用phly/phly-configfactory软件包。

从配置服务中提取嵌套配置数组的工厂

1.1.1 2020-01-14 13:47 UTC

This package is auto-updated.

Last update: 2020-01-14 13:48:46 UTC


README

废弃

自2020-01-14起,此软件包已被废弃。鼓励用户迁移到Laminas,并使用phly/phly-configfactory作为此软件包的替代品。

Build Status Coverage Status

此库提供从嵌套键提取配置的可重复使用的工厂。

安装

运行以下命令以安装此库

$ composer require phly/phly-expressive-configfactory

使用方法

将以下结构的工厂Phly\Expressive\ConfigFactory分配给服务

config-<dot.separated.config.keys>

例如,如果您有以下结构

return [
    'cache' => [
        'adapters' => [
            'blog' => [
                'connection' => 'tcp://localhost:6349',
                'username'   => 'www-data',
                'prefix'     => 'blog',
            ],
        ],
    ],
];

并且您想要"blog"适配器配置,您将按以下方式分配依赖关系

return [
    'dependencies' => [
        'factories' => [
            'config-cache.adapters.blog' => \Phly\Expressive\ConfigFactory,
        ],
    ],
];

返回空数组或引发异常

默认情况下,如果在预期键中找不到配置,则工厂返回一个空数组。如果您想使其引发异常,可以按以下方式分配工厂

return [
    'dependencies' => [
        'factories' => [
            'config-cache.adapters.blog' => new \Phly\Expressive\ConfigFactory(false),
        ],
    ],
];

此操作是安全的,因为ConfigFactory实现了__set_state(),允许使用var_export()安全地序列化。

异常将指示它尝试检索的键层次结构。

在工厂中使用配置

在您的工厂中,当检索服务时,您将引用元名称。以下是我们上面的示例

use Psr\Container\ContainerInterface;

class BlogCacheFactory
{
    public function __invoke(ContainerInterface $container)
    {
        return new Cache($container->get('config-cache.adapters.blog'));
    }
}

抽象工厂

自1.1.0起

如果您正在使用zend-servicemanager,您可以使用类Phly\Expressive\ConfigAbstractFactory作为抽象工厂。这允许您省略为要检索的每个配置段添加工厂条目的操作。相反,您可以添加以下内容

return [
    'dependencies' => [
        'abstract_factories' => [
            \Phly\Expressive\ConfigAbstractFactory::class,

            // OR

            new \Phly\Expressive\ConfigAbstractFactory(false),
        ],
    ],
];

存在时,它将处理任何以config-为前缀的服务,并以与ConfigFactory相同的方式操作。

注意事项

您应仅指定将返回数组的键。大多数容器仅允许从工厂返回数组或对象,否则将引发异常。对于需要对象的情况,Expressive通常将其转换为ArrayObject实例,这使得这是安全的。

支持