Contenu connexe Similaire à Dependency injection v Nette 2.1 prakticky Similaire à Dependency injection v Nette 2.1 prakticky (8) Plus de Filip Procházka (7) Dependency injection v Nette 2.1 prakticky2. Co si povíme?
- rychle prolítneme teorii DI
- jak to funguje v Nette
- jak napsat použitelné rozšíření
4. Konstruktor injection
class Cart extends NetteObject {
private $entityManager;
public function __construct(EntityManager $em) {
$this->entityManager = $em;
}
http://wbab.suffolk.lib.ny.us/wp-content/uploads/2013/12/medals.jpg
5. Setter injection
class Cart extends NetteObject {
private $entityManager;
public function setEntityManager(EntityManager $em) {
$this->entityManager = $em;
}
http://wbab.suffolk.lib.ny.us/wp-content/uploads/2013/12/medals.jpg
6. Property injection
class Cart extends NetteObject {
/** @var EntityManager */
public $entityManager;
http://wbab.suffolk.lib.ny.us/wp-content/uploads/2013/12/medals.jpg
7. Magic injection
class Cart extends NetteObject {
/** @var EntityManager */
private $entityManager;
http://www.wyatt-lorenz.com/images/biohazard_warnings.jpg
22. Generované továrničky
/** @var IOrderFormFactory @inject */
public $orderFormFactory;
protected function createComponentOrderForm()
{
$form = $this->orderFormFactory->create();
$form->onSuccess[] = ...;
return $form
}
23. Rozšíření
class OrmExtension extends CompilerExtension {
# vytvori služby
public function loadConfiguration() { }
# upravuje své a jiné služby
public function beforeCompile() { }
# hackuje DI container
public function afterCompile() { }