Zend Framework 2 : Dependency Injection
-
Upload
abdul-malik-ikhsan -
Category
Technology
-
view
1.791 -
download
0
description
Transcript of Zend Framework 2 : Dependency Injection
![Page 1: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/1.jpg)
ZEND FRAMEWORK 2 DEPENDENCY INJECTION
h#p://slideshare.net/samsonasik
![Page 2: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/2.jpg)
Abdul Malik Ikhsan
a.k.a samsonasik
~ Zend Framework specialist
~ Codeigniter Mentor
On twi#er @samsonasik Blog h#p://samsonasik.wordpress.com
![Page 3: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/3.jpg)
Apa sih “DI” itu ?
![Page 4: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/4.jpg)
« Dependency InjecGon is where components are given their dependencies through their
constructors, methods, or directly into fields. »
h#p://www.picocontainer.org/injecGon.html h#p://www.slideshare.net/fabpot/dependency-‐injecGon
![Page 5: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/5.jpg)
-‐ DEPENDENCY INJECTION TERJADI KETIKA KOMPONEN SOFTWARE ( DALAM HAL INI, KELAS ) DEPENDENSINYA DIBERIKAN MELALUI KONSTRUKTOR MEREKA, METHOD, ATAU LANGSUNG KE FIELDS
![Page 6: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/6.jpg)
=> PASSING ATAU SETTING DEPENDENCY KE DALAM KOMPONEN SOFTWARE
=> JIKA SEBUAH KELAS TIDAK DAPAT MELAKUKAN PEKERJAANNYA TANPA DEPENDENCY, MAKA TERJADILAH DEPENDENCY INJECTION
![Page 7: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/7.jpg)
-‐ CONSTRUCTOR INJECTION -‐ SETTER INJECTION -‐ INTERFACE INJECTION
![Page 8: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/8.jpg)
CONSTRUCTOR INJECTION
class Kalimat {
protected $filterstring;
public funcGon __construct(FilterString $filterstring ) { $this-‐>filterstring = $filterstring ; } }
![Page 9: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/9.jpg)
SETTER INJECTION
class Kalimat {
protected $filterstring;
public funcGon setFilterString(FilterString $filterstring ) { $this-‐>filterstring = $filterstring ; } }
![Page 10: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/10.jpg)
INTERFACE INJECTION
interface Kalimat {
public funcGon setFilter(FilterString $filterstring);
}
![Page 11: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/11.jpg)
2 KELAS ( SAMPLE )….
![Page 12: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/12.jpg)
<?php
class FilterString { protected $str; public funcGon __construct($str) { $this-‐>str = ucfirst( str_replace(" ","_", $str) ); } public funcGon get() { return $this-‐>str; } }
![Page 13: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/13.jpg)
<?php
class Kalimat {
protected $filterstring;
public funcGon __construct(FilterString $filterstring)
{
$this-‐>filterstring = $filterstring;
}
public funcGon out()
{
echo 'ouGng .... -‐> ';
echo $this-‐>filterstring-‐>get(); }
}
![Page 14: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/14.jpg)
TANPA ZEND\DI
<?php
$filter = new FilterString('saya sedang membaca');
$kalimat = new Kalimat($filter);
$kalimat-‐>out();
![Page 15: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/15.jpg)
KITA BUTUH CONTAINER !!! -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ /* MENYIMPAN OBJECT DEFINITION DAN ENVIRONMENT, MENG-‐HANDLE PENCIPTAAN OBJECT */
![Page 16: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/16.jpg)
ZEND FRAMEWORK MEMPUNYAI ( DEPENDENCY INJECTION COMPONENT )
![Page 17: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/17.jpg)
<?php
$di = new Zend\Di\Di; $di-‐>instanceManager() -‐>setParameters('FilterString', array( 'str' => 'saya sedang membaca’ ));
$kalimat = $di-‐>get('Kalimat'); //contains FilterString ! $kalimat-‐>out();
![Page 18: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/18.jpg)
MENGGUNAKAN SETTER ???
![Page 19: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/19.jpg)
…………… public funcGon setFilterString(FilterString $filterstring) {
$this-‐>filterstring = $filterstring; }
![Page 20: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/20.jpg)
$di = new \Zend\Di\Di();
$di-‐>configure(new \Zend\Di\ConfiguraGon(array( 'definiGon' => array(
'class' => array( 'Kalimat' => array(
'setFilterString' => array('required' => true)
) )
) )));
$kalimat = $di-‐>get('Kalimat',
array( 'str'=>'saya sedang membaca' ) );
$kalimat-‐>out();
![Page 21: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/21.jpg)
TERIMA KASIH ;)
![Page 22: Zend Framework 2 : Dependency Injection](https://reader036.fdocuments.in/reader036/viewer/2022062313/559aa3511a28abc4508b462d/html5/thumbnails/22.jpg)
Referensi : • h#p://www.picocontainer.org/injecGon.html • h#p://www.slideshare.net/fabpot/dependency-‐injecGon
• h#p://mwop.net/slides/2011-‐10-‐18-‐Zf2-‐Overview/Zf2Overview.html#slide15
• h#p://akrabat.com/zend-‐framework-‐2/an-‐introducGon-‐to-‐zenddi/
Foto : • h#p://www.as3dp.com/wp-‐content/uploads/2010/10/dependencyInjecGon.png