考虑到DDD方法,我将一个类移动到一个公共文件夹中,因为它将在模块之间共享。问题是我不知道如何使它与依赖注入和容器一起工作。
基本上,MenuService generate方法,创建一个autogenerator实例,从MenuRepository传递4个数组;
MenuService.php
namespace MP\Application\Services;
use MP\Domain\Repositories\Repository;
use MP\Application\Generation\AutoGenerator;
class MenuService {
private $repository;
public function __construct(Repository $repository){
$this->repository = $repository;
}
public function generate(){
// fetch/set $recipes, $menu, $settings;
$generate = new AutoGenerator($recipesArr, $menuArr, $allIngredients);
}
}
唯一的原因
$allIngredients
在这里传递是因为AutoGenerator实例化了另一个名为Scaler的类,main方法被调用
scale($recipe, $percentage, $AllIngredients)
哪是唯一的地方
甚至在autogenerator类中使用。
class AutoGenerator {
public function add(...){
$percentage = new Percentage(...);
$scaler = new Scaler();
$try = $scaler->scale($recipe, $percentage, $this->allIngredients);
if($try->isSuccess()){
...
}
}
}
我之所以问这个问题是因为我不确定我必须创建一个类来返回一个数据库查询,这样我就可以在构造函数中传递它了。$recipesArr/$allingredites来自RecipeRepository,$menuArr来自MenuRepository;
还是应该在scaler构造函数中注入RecipeRepository和MenuRepository?
MP\Application\Generation\Common\Scaler;
MP\Application\Generation\AutoGenerator;
SHARED\Domain\Repositories\Ingredients;
MP\Domain\Repositories\RecipeRepository;
MP\Domain\Repositories\MenuRepository;