本篇文章给人人带来的内容是关于PHP依靠注入的细致引见(附示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。
依靠注入
传统的思绪
应用程序用到一个Foo类,就会建立Foo类并挪用Foo类的要领。
如果这个要领内须要一个Bar类,就会建立Bar类并挪用Bar类的要领。
而这个要领内须要一个Bim类,就会建立Bim类,接着做些别的事情。
/** * Foo */ class Foo { public function doSomething($value='') { # code... $Bar = new Bar(); $Bar->doSomething(); echo 'Foo doSomething','<br />' ; } } /** * Bar */ class Bar { public function doSomething($value='') { # code... $Bim = new Bim(); $Bim->doSomething(); echo 'Bar doSomething','<br />' ; } } /** * Bim */ class Bim { public function doSomething($value='') { # code... echo 'Bim doSomething','<br />' ; } } $doSomething = new Foo(); $doSomething->doSomething();
依靠注入
应用程序用到Foo类,Foo类须要Bar类,
Bar类须要Bim类,那末先建立Bim类,再建立Bar类并把Bim注入,再建立Foo类,并把Bar类注入,
再挪用Foo要领,Foo挪用Bar要领,接着做些别的事情。
/** * Bim2 */ class Bim2 { public function doSomething($value='') { # code... echo 'Bim2 doSomething','<br />' ; } } /** * Bar2 */ class Bar2 { private $bim2 ; public function __construct(Bim2 $bim2) { # code... $this->bim2 = $bim2 ; } public function doSomething($value='') { # code... $this->bim2->doSomething(); echo "Bar2 doSomething",'<br />'; } } /** * Foo */ class Foo2 { private $bar2 ; public function __construct(Bar2 $bar2) { # code... $this->bar2 = $bar2 ; } public function doSomething($value='') { # code... $this->bar2->doSomething(); echo "Foo2 doSomething",'<br />'; } } $doSomething2 = new Foo2(new Bar2(new Bim2())); $doSomething2->doSomething();
这就是掌握反转形式。依靠关联的掌握反转到挪用链的出发点。如许你能够完整掌握依靠关联,经由过程调解差别的注入对象,来掌握程序的行动。
比方Foo类用到了memcache,能够在不修正Foo类代码的情况下,改用redis。
运用依靠注入容器后的思绪是应用程序须要到Foo类,就从容器内获得Foo类,容器建立Bim类,再建立Bar类并把Bim注入,再建立Foo类,并把Bar注入,应用程序挪用Foo要领,Foo挪用Bar要领,接着做些别的事情.
扩大:容器担任实例化,注入依靠,处置惩罚依靠关联等事情。
以上就是PHP依靠注入的细致引见(附示例)的细致内容,更多请关注ki4网别的相干文章!