Závislosti v komponentách – jak správně na závislosti?
- thunderbuff
- Člen | 164
Našel jsem tu několik starých diskuzí o předávání závislostí komponentám. Existuje v nette 2.0.8 nějaký lepší způsob než ten popsaný níže? Přijde mi to hrozně neohrabané. Pokud mám v presentru 5 komponent a pro každou 3 závislosti, presenter začíná být docela košatý. A navíc se loaduje dost věcí, které nepoužiju. A pokud nastane situace, kdy mám vnořené 3 komponenty v sobě, musím závislosti předávat řes celý strom až do presenteru a to je strašně ukecané.
<?php
class TestPresenter extends BasePresenter {
private $s1;
public function injectDependencies(
Service1 $s1
) {
$this->s1 = $s1;
}
protected function createComponentMojeKomponenta() {
return new MojeKomponenta($this->s1);
}
}
?>
Editoval thunderbuff (1. 2. 2013 1:21)
- vvoody
- Člen | 910
Pre každú komponentu si vytvor tovární třídu a zaregistruj ju ako službu. Tým sa zredukuje počet závislostí presne na počet komponent ktoré presenter obsahuje. Na druhú stranu pribudne v configu celkom dlhý zoznam služieb, ale ten s pribúdajúcim počtom komponent narastá len lineárne narozdiel od množstva predávaných závislostí na jednotlivých úrovniach cez celý strom.
- thunderbuff
- Člen | 164
Máš pravdu, díky za radu. Nakonec jsem komponenty propojil do stromu a závislosti řeším tak, že z nejvyšší komponenty pod presenterem jsem vytvořil službu. Takže závislosti nehyzdí presenter, přesně, jak jsem chtěl :-)
- Filip Procházka
- Moderator | 4668
Použij továrničky a můžeš si injektovat je, každé komponentě jenom to co ona sama potřebuje ;)