【问题标题】:PHP Dependency Injection Container With Factory带工厂的 PHP 依赖注入容器
【发布时间】:2016-04-06 13:06:37
【问题描述】:

我正在使用 silexphp/Pimple 依赖注入容器 (DIC),我不确定如何处理经典的工厂模式。

例子:

父类Animal.php 有两个子类DogAnimal.phpCatAnimal.php。子类的数量可以增长。

在这种情况下,我想创建一个工厂来创建新的 Animal 对象或 Animal 类的子对象。 Pimple 确实允许为每个服务创建工厂方法。

在使用 Pimple DIC 时,我认为我不想将每个子类(狗、猫等)添加为服务。特别是随着列表的增长。对我来说,这似乎是对 DIC 的滥用,但也许我错了。

我是否正确假设我应该创建一个 Animal Factory 服务并使用 Pimple 将依赖项注入到工厂中,而工厂又用于创建新的 Dog 或 Cat?

【问题讨论】:

    标签: php dependency-injection subclass pimple


    【解决方案1】:

    是的,你是对的。您可以创建一个服务 (AnimalFactory) 来创建您要使用的对象(DogAnimalCatAnimal、...)。

    一个简单的例子可以是:

    class AnimalFactory
    {
        public function createAnimal($name)
        {
            // some logic here with $name
    
            $animal = new ...();
            return $animal;
        }
    }
    
    $pimple['animal_factory'] = function ($c) {
        return new AnimalFactory();
    };
    
    $dog = $pimple['animal_factory']->createAnimal('Dog');
    

    【讨论】:

    • 太棒了。感谢您的健全性检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多