加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP依赖注入容器与工厂

发布时间:2020-12-13 17:00:13 所属栏目:PHP教程 来源:网络整理
导读:我正在使用silexphp / Pimple依赖注入容器(DIC),并且不确定如何处理经典的Factory模式. 例: 父类Animal.php有两个名为DogAnimal.php和CatAnimal.php的子类.子类的数量可以增长. 在这种情况下,我想创建一个Factory来创建新的Animal对象或Animal类的子对象. P
我正在使用silexphp / Pimple依赖注入容器(DIC),并且不确定如何处理经典的Factory模式.

例:

父类Animal.php有两个名为DogAnimal.php和CatAnimal.php的子类.子类的数量可以增长.

在这种情况下,我想创建一个Factory来创建新的Animal对象或Animal类的子对象. Pimple允许每个服务创建Factory方法.

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

我是否正确地假设我应该创建一个动物工厂服务并使用Pimple将依赖关系注入工厂,而工厂又会习惯于创建一个新的Dog或Cat?

解决方法

你是对的.您可以创建一个服务(AnimalFactory)来创建您想要使用的对象(DogAnimal,CatAnimal,…).

一个简单的例子可以是:

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');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读