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
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í :)