Services (služby)
- Petr Daňa
- Člen | 109
Ahoj, koukal jsem, hledal jsem, ale nikde jsem nenašel nějaký popis služeb, co to konkrétně je a jak to funguje, co to musí splňovat apod. Můžete prosím někdo sepsat aspoň stručné shrnutí těch pár základních věcí, ať jsem v obraze, když se se službami ohání v příkladech a dokumentaci? Dikec.
- Jan Tvrdík
- Nette guru | 2595
ServiceLocator je třída implementující obecné rozhraní IServiceLocator. Jejím úkolem je dovávat třídy, které je potřeba (většinou ty, které splňují dané rozhraní).
Např. Environment::getUser() požádá ServiceLocator, aby jí sehnal někoho, kdo zvládá rozhraní IUser.
Editoval Jan Tvrdík (8. 12. 2008 16:23)
- romansklenar
- Člen | 655
David by možná řekl, že jsou to důmyslnější singletony, dotupné odkudkoliv. Získání objektů nemusí být striktně podle jména rozhraní.
Pár příkladů:
config.ini
; za = je vždy jméno třídy nebo callback metody, která má být zavolána, musí však vracet instanci třídy (návrhový vzor továrna)
service.Nette-Security-IAuthenticator = Users
service.Nette-Security-IAuthorizator = "Acl::factory()"
service.CMS-Web-Language = Language
service.CMS-Options = Options
použití:
$acl = Environment::getService('Nette\Security\IAuthorizator');
$acl->isAllowed(...);
$lang = Environment::getService('CMS\Web\Language');
$collation = $lang->collation;
Editoval romansklenar (8. 12. 2008 19:52)