yiisoft/factory

1.2.0 2023-12-03 05:59 UTC

This package is auto-updated.

Last update: 2024-08-31 13:47:26 UTC


README

Yii

Yii 工厂


Latest Stable Version Total Downloads Build Status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

此包提供抽象对象工厂,允许通过给定的定义创建对象,并通过PSR-11容器解决依赖。

要求

  • PHP 8.0 或更高版本。

安装

可以使用Composer安装此包

composer require yiisoft/factory

通用用法

如果您需要使用定义语法创建对象,并希望为创建的对象配置默认值,那么工厂非常有用。

$container = new PSR11DependencyInjectionContainer();
$factoryConfig = [
    EngineInterface::class => [
        'class' => EngineMarkOne::class,
        '__construct()' => [
            'power' => 42,
        ],
    ]
];

$factory = new Factory($container, $factoryConfig);

$one = $factory->create(EngineInterface::class);
$two = $factory->create([
    'class' => EngineInterface::class,
    '__construct()' => [
        'power' => 146,
    ],
]);

在上面的代码中,我们定义了工厂配置,指定当我们需要EngineInterface时,将创建一个EngineMarkOne实例,其power构造函数参数等于42。我们还指定,创建的对象请求的所有依赖项都应由PSR11DependencyInjectionContainer解决。

第一次调用create()使用EngineInterface的默认配置。第二次调用指定了power构造函数参数的自定义配置。在这种情况下,指定的配置与默认配置合并,当键名相同时会覆盖其键值。

生产环境调整

默认情况下,工厂在设置定义时验证定义。在生产环境中,通过将false作为第三个构造函数参数传递,可以将其关闭。

$factory = new Factory($container, $factoryConfig, false);

文档

如果您需要帮助或有任何问题,Yii 论坛是一个很好的地方。您还可以查看其他Yii 社区资源

许可

Yii 工厂是自由软件。它根据BSD许可证发布。有关更多信息,请参阅LICENSE

Yii Software维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack