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

Posted person3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[随笔][胡思乱想][对依赖注入和控制反转的思考]相关的知识,希望对你有一定的参考价值。

  • 控制反转(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);
  }
}

以上是关于[随笔][胡思乱想][对依赖注入和控制反转的思考]的主要内容,如果未能解决你的问题,请参考以下文章

iOS控制反转(IoC)与依赖注入(DI)的实现

控制反转与依赖注入

“依赖注入”,“控制反转”是指啥?

[译]javascript中的依赖注入

javaweb-控制反转与依赖注入

Spring_IOC控制反转和DI依赖注入