Nahrazení DI a použití autowiringu

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

Ahoj všeci,
mám dotaz ohledně autowiringu a DI… Chápu sice jaké má výhody předávat si závyslosti pomocí továrničky, ale pořád nemužu pochopit přesný princip… Prošel jsem všechny návody, fóra a pořád to nějak nechápu…

Dejme tomu, že chci nahradit klasické DI továrničkou pomocí :

Mám model \FilmsRepository a SerialsRepository\ které jsou extends \Repository

Klasický přístup:

config.neon

	services:
		filmsRepository: FilmsRepository
		serialsRepository: SerialsRepository

MoviesPresenter.php

<?php

	class MoviesPreseter extends BasePresenter {
		protected $filmsRepository, $serialsRepository;

		public function injectMovies( FilmsRepository $filmsRepository, SerialsRepository $serialsRepository )
			$this->serialsRepository = $serialsRepository;
			$this->filmsRepository = $filmsRepository;

		}

		//a do komponenty pak:
		public function createComponentFilmsTable() {
			$table = new component\FilmTable( $this->filmsRepository);
			return $table;
		}
	}
?>

No a ted bych nekoho poprosil konkrétní příklad pomocí továrničky a autowiringu… Konkrétně mě zajímá jak je to s ‚interface‘, vztahy a příklad pro dva a více repositářů… a jejich vztahy predat jak presenteru, tak následně komponente

Díky moc… věřím že by to zajímalo více lidí :)