Jak to tam vstříknout?

Constructor injection
public function __construct(IMailer $mailer)
Method injection (inject* metoda)
public function injectMailer(IMailer $mailer)
Property injection (@inject anotace)
/** @var \Nette\Mail\IMailer @inject */
public $mailer;
Co kde použít? Presenter Služba Komponenta s továrnou
Konstruktor 1)
Metoda inject 3) 2) 2) 3)
@inject 3)

1) pouze v konkrétních presenterech, nikoliv v Base* presenterech

2) je nutno zapnout v neonu inject: true u dané služby/komponenty

3) vhodné pouze u Base* tříd jako BasePresenter nebo BaseControl

- doporučeno
- klidně použijte
- vyvarujte se
- vážně nedoporučeno

Co tam vstříknout?

(uvedenou třídu/rozhraní vždy vyžádejte dle postupu vlevo)

Cache (doc)
//ve $storage je injectované IStorage
$cache = new Nette\Caching\Cache($storage);
$cache->load($key);
HTTP (doc)
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
  • setCode($code)
  • setCookie($cookie, $value, $expire, ...)
  • setHeader($header, $value)
  • isSent()
  • ...
Maily (doc)
Vyžadujte Nette\Mail\IMailer
//v $mailer je injectnuty IMailer
$message = new Nette\Mail\Message();
$message->addTo($to);
...
$mailer->send($message);
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
Uživatel a zabezpečení (doc)
Uživatel Nette\Security\User
  • isLoggedIn()
  • getIdentity()
  • getRoles()
  • isInRole($role)
  • isAllowed($resource, $privilege)
  • login($id = NULL, $password = NULL)
  • logout($clearIdentity = FALSE)
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
LinkGenerator Nette\Application\LinkGenerator
  • link($dest, $params) - vytvoří URL pro presenter a parametry
Šablony
Nette\Application\UI\ITemplateFactory
  • createTemplate($control = NULL) - vytvoří šablonu, kterou znáte z presenteru
Nette\Bridges\ApplicationLatte\ILatteFactory

Nette DI cheatsheet (2.3)

< back PDF