作家
登录

PHP如何实现依赖注入

作者: 来源: 2017-08-16 17:03:23 阅读 我要评论

  •         return new $str(); 
  •         } 
  •  
  • T要应用哪个是不明白的,是以,我们可以将其工厂化。【看上去很简单,在DI实际上有表现】

    DI(重点来了)

    起首,我们看一下PHP的psr规范。

    http://www.php-fig.org/psr/psr-11/

    官方定义的接口

    Psr\Container\ContainerInterface

    1. class A{ 
    2.         public function echo() 
    3.         { 
    4.                 echo 'A'.PHP_EOL; 
    5.         } 
    6. class EchoT { 
    7.         protected  $t; 
    8.         public function __construct() 
    9.         { 
    10.               $this->t = new A(); 
    11.         } 
    12.         public function echo(){ 
    13.                 $this->t->echo(); 
    14.         } 
    15.  

    包含两个办法

    function has($id);

    dependency injection container

    细心看膳绫擎的工厂,是不是和get($id)很一致,PHP官方将其定义为容器(Container,我小我懂得,就是一个复杂的工厂)

    依附注入容器

    将T抽象出为接口,如许,EchoT类中的echo办法变成一个抽象的办法,不到运行那一刻,不知道他们的Method方法是怎么实现的。

    1. namespace Core; 
    2. use Psr\Container\ContainerInterface; 
    3. class Container implements ContainerInterface 
    4.         protected $instance = [];//对象存储的数组 
    5.         public function __construct($path) { 
    6.                 $this->_autoload($path);  //起首我们要主动加载  psr-autoload 
    7.         } 
    8.  
    9.         public function build($className) 
    10.         { 
    11.                 if(is_string($className) and $this->has($className)) { 
    12.                         return $this->get($className); 
    13.                 } 
    14.                 //反射 
    15.                 $reflector = new \ReflectionClass($className); 

        推荐阅读

        在命令行中将CentOS 7与Samba4 AD集成

      【51CTO晃荡】8.26 带你深度懂得清华大年夜学、搜狗基于算法的IT运维实践与摸索 本指南将向你介绍若何应用 Authconfig 在敕令行中将无图形界面的 CentOS 7 办事器集成到 Samba4 AD 域控制>>>详细阅读


      本文标题:PHP如何实现依赖注入

      地址:http://www.17bianji.com/lsqh/36755.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)