Co tam vstříknout? Nette DI cheatsheet Jak to tam vstříknout? (uvedenou třídu/rozhraní vždy vyžádejte dle postupu vlevo) Constructor injection Cache (doc) public function __construct(IMailer $mailer) Method injection (inject* metoda) public function injectMailer(IMailer $mailer) Property injection (@inject anotace) Konstruktor Presenter Komponenta s továrnou Služba 1) Metoda inject @inject //ve $storage je injectované IStorage $cache = new Nette\Caching\Cache($storage); $cache->load($key); HTTP (doc) /** @var \Nette\Mail\IMailer @inject */ public $mailer; Co kde použít? Vyžadujte rozhraní Nette\Caching\IStorage 2) 2) 3) HTTP požadavek: Nette\Http\IRequest getUrl() - Nette\Http\UrlScript getHeaders() - pole hlaviček getHeader($header) getCookie($key, $default = NULL) getRemoteAddress() ... HTTP odpověď: Nette\Http\IResponse Session (doc) Vyžadujte Nette\Http\Session //v $session je injectnute Session $section = $session->getSection($mySection); $section->key = $value; Databáze (doc) Vyžadujte Nette\Database\Context query($query[, $arg[,...]]) - provede dotaz table($name) - vrátí Nette\Database\Selection Uživatel a zabezpečení (doc) Uživatel - Nette\Security\User isLoggedIn() getIdentity() getRoles() isInRole($role) isAllowed($resource, $privilege) setCode($code) login($id = NULL, $password = NULL) 1) starý způsob, nyní použijte raději @inject anotace setCookie($cookie, $value, $expire, ...) logout($clearIdentity = FALSE) 2) je nutno zapnout v neonu inject: true u dané služby/komponenty setHeader($header, $value) 3) vhodné pouze pro specifcké případy jako BaseControl a injectování TemplateFactory. Jinak používejte konstruktor - doporučeno - klidně použijte - vyvarujte se - vážně nedoporučeno isSent() ... Maily (doc) Vyžadujte Nette\Mail\IMailer TIP Zkuste také rozšíření Kdyby/Autowired (github.com/kdyby/autowired), které umožňuje pracovat se závislostmi podobným způsobem jako anotace @inject , ale služby načítá "lazy", tedy až ve chvíli, kdy jsou skutečně potřeba. //v $mailer je injectnuty IMailer $message = new Nette\Mail\Message(); $message->addTo($to); ... $mailer->send($message); Autorizátor - Nette\Security\IAuthorizator Autentikátor - Nette\Security\IAuthenticator User storage - Nette\Security\IUserStorage Aplikace Aplikace - Nette\Application\Application getPresenter() - vrátí aktuální presenter Router - Nette\Application\IRouter constructUrl($appRequest, $refUrl) - vytvoří URL pro aplikační požadavek © 2014 David Matějka Licence CC BY-SA 3.0
© Copyright 2024 ExpyDoc