Předávání závislostí – boptnání
- MartinitCZ
- Člen | 580
Snažim se vyřešit závislosti v Nette database. Abych to trochu
vysvětlil, tak zde uvedu příklad(y).
Máme tabulku article, article_slug a article_tag. Rád bych měl vztah 1:1,
tedy co tabulka to php soubor (model).
Jenže díky tomu mi naboptnají závislosti. Když budu mít formulář, kde
ukládám články, tak musím předat 3 modely přes constructor.
Osobně se mi toto řešení moc nelíbí. Jak to řešíte vy?
Napadlo mě jedno řešení, ikdyž nevím, zda je to zrovna dobrý způsob.
Vytvořím si articleModel, kde budu přidávat články, upravovat … vyhledávat..... A pomocí articleModel se dostanu k ArticleTagModel =>
$this->articleModel->updateBy(array('id' => 1));
$this->articleModel->slug->findOneBy('name' => 'moto');
$this->articleModel->tag->findOneBy('name' => 'car');
Tzv. když budu chtít pracovat s tabulkou article, article_tag nebo article_slug, tak si vždy injectu articleModel a k ostatním se dostanu pomocí něj.
Snad to chápete.
- vitkutny
- Člen | 73
ke každé tabulce měj 1 třídu které nebudou navzájem na sobě závislé
articleRepository
articleTagRepository
articleSlugRepository
pro akce ke kterým potřebuješ více těchto tříd si vytvoř mezivrstvu (fasádu) a do formuláře nebudeš předávat všechny repozitáře ale jen tuto mezivrstvu
class ArticleFacade {
private $repository;
private $tagRepository;
private $slugRepository;
public function __construct(ArticleRepository $repository, ArticleTagRepository, $tagRepository, ArticleSlugRepository $slugRepository){
$this->repository=$repository;
$this->tagRepository=$tagRepository;
$this->slugRepository=$slugRepository;
}
}