Zend Framework 2 : Dependency Injection
Zend Framework 2 menghadirkan komponen baru, yaitu Dependency Injection Container Component. Komponen ini berada pada package Zend\Di yang nantinya akan jadi container dari kelas yang kita buat.
Ok, saya akan mencoba memberi contoh sederhana. Anggaplah kita mempunyai 2 kelas sebagai berikut :
class FilterString { protected $str; public function __construct($str) { $this‐>str = ucfirst( str_replace(" ","_", $str) ); } public function get() { return $this->str; } } //////////////// class Kalimat { protected $filterstring; public function __construct(FilterString $filterstring ) { $this->filterstring = $filterstring ; } }
“Kalimat” harus mempunyai “FilterString”. maka kita harus menciptakan dulu object dari kelas FilterString seperti berikut:
$filter = new FilterString('saya sedang membaca'); $kalimat = new Kalimat($filter); $kalimat‐>out();
Dengan Zend\Di, kita tak perlu membuat dulu object dari kelas FilterString, bisa dituliskan seperti berikut :
$di = new Zend\Di\Di; $di‐>instanceManager() ->setParameters('FilterString', array( 'str' => 'saya sedang membaca’ )); $kalimat = $di‐>get('Kalimat'); //contains FilterString ! $kalimat‐>out();
Bagaimana jika menggunakan setter ? misal kita ubah class kalimat menjadi seperti berikut :
class Kalimat { protected $filterstring; public function setFilterString(FilterString $filterstring) { $this->filterstring = $filterstring; } public function out() { echo 'outing .... -> '; echo $this->filterstring->get(); } }
Maka, cara penggunaanya seperti berikut :
$di = new \Zend\Di\Di(); $di‐>configure(new \Zend\Di\ConfiguraGon(array( 'definition' => array( 'class' => array( 'Kalimat' => array( 'setFilterString' => array('required' => true) ) ) ) ))); $kalimat = $di‐>get('Kalimat', array( 'str'=>'saya sedang membaca' ) ); $kalimat->out();
Done !!!
Referensi :
http://www.picocontainer.org/injection.html
http://www.slideshare.net/fabpot/dependency-injection
http://mwop.net/slides/2011-10-18-Zf2-Overview/Zf2Overview.html#slide15
http://akrabat.com/zend-framework-2/an-introduction-to-zenddi/
leave a comment