Zend\Di impressioni – ZF2
Il panorama Zend è in completo cambiamento. La recente uscita della beta2 (seconda di un ciclo di quattro beta) del framework di seconda generazione marchiato Zend ha posto le basi per iniziare a muovere i primi passi nelle nuove implementazioni e funzionalità disponibili, in particolare il DiC (Dependency Injection Containers).
Il componente è molto flessibile e configurabile, questo lo rende ottimo per l’inziezione delle dipendenze. In particolare il componente è diviso in diverse sezioni e può essere configurato in diverse modalità per potergli far dirigere l’iniezione delle dipendenze.
Il metodo più semplice e veloce è utilizzare la definizione forte dei tipi in modo che autonomamente possa capire quali oggetti andare ad iniettare per costruire tutte le dipendenze. Le parti non fortemente dichiarate, come stringhe e tipi base (scalari), possono essere dichiarate nel configuratore e ottenere un risultato semplice e veloce.
Possiamo vedere un esempio molto chiaro proposto da Ralph Schindler (puoi controllare l’originale sull’account github di Ralph Schindler)
<?php
namespace MovieApp {
class Lister implements FinderAwareInterface {
public $finder;
public function setFinder(Finder $finder){
$this->finder = $finder;
}
}
class Finder {
public function findAllByName($name) {}
}
interface FinderAwareInterface {
public function setFinder(Finder $finder);
}
}
namespace {
// bootstrap
// ... start autoloader
$di = new Zend\Di\Di;
$lister = $di->get('MovieApp\Lister');
// expression to test
$works = ($lister->finder instanceof MovieApp\Finder);
// display result
echo (($works) ? 'It works!' : 'It DOES NOT work!');
}
L’applicazione esegue la “get” ed è compito del DiC andare a costruire tutte le dipendenze e restituire l’oggetto correttamente inizializzato.
