簡體   English   中英

PHP依賴注入容器與工廠

[英]PHP Dependency Injection Container With Factory

我正在使用silexphp/Pimple依賴注入容器(DIC),並且不確定如何處理經典的Factory模式。

例:

父類Animal.php有兩個名為DogAnimal.phpCatAnimal.php子類。 子類的數量可以增長。

在這種情況下,我想創建一個Factory來創建新的Animal對象或Animal類的子對象。 Pimple允許每個服務創建Factory方法。

在使用Pimple DIC時,我認為我不想將每個子類(Dog,Cat等)添加為服務。 特別是隨着名單的增長。 對我來說,這似乎是對DIC的濫用,但也許我錯了。

我是否正確地假設我應該創建一個動物工廠服務並使用Pimple將依賴關系注入工廠,而工廠又會習慣於創建一個新的Dog或Cat?

你是對的。 您可以創建一個服務( 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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM