码迷,mamicode.com
首页 > 其他好文 > 详细

[随笔][胡思乱想][对依赖注入和控制反转的思考]

时间:2018-07-18 23:26:36      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:添加   构造器   exce   MIXED   foo   exist   php   一个   依赖注入   

  • 控制反转(IOC)是一种思想,在PHP中使用依赖注入(DI)实现,依赖注入是一种具体的实现方式。根据依赖注入的位置和方式的不同,可以有构造器注入和工厂模式注入。
  • 在这个过程中,一般有三个参与者:一个某个对象,一个DI容器,一个对象依赖的外部资源。加入A类的对象依赖B类的对象。正常的流程是,A的对象控制着流程,首先创建一个B对象,然后调用它。控制反转之后,A的对象的执行需要等待DI容器将B对象传递给A对象。
<?php
class Ioc {
/**
* @var 注册的依赖数组
*/
 
  protected static $registry = array();
 
  /**
  * 添加一个resolve到registry数组中
  * @param string $name 依赖标识
  * @param object $resolve 一个匿名函数用来创建实例
  * @return void
  */
  public static function register($name, Closure $resolve)
  {
   static::$registry[$name] = $resolve;
  }
 
  /**
   * 返回一个实例
   * @param string $name 依赖的标识
   * @return mixed
   */
  public static function resolve($name)
  {
    if ( static::registered($name) )
    {
     $name = static::$registry[$name];
     return $name();
    }
    throw new Exception(‘Nothing registered with that name, fool.‘);
  }
  /**
  * 查询某个依赖实例是否存在
  * @param string $name id
  * @return bool 
  */
  public static function registered($name)
  {
   return array_key_exists($name, static::$registry);
  }
}

[随笔][胡思乱想][对依赖注入和控制反转的思考]

标签:添加   构造器   exce   MIXED   foo   exist   php   一个   依赖注入   

原文地址:https://www.cnblogs.com/person3/p/9332716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!