Závislosti v komponentách – jak správně na závislosti?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
thunderbuff
Člen | 164
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Použij továrničky a můžeš si injektovat je, každé komponentě jenom to co ona sama potřebuje ;)