在PHP中依赖注入?

时间:2014-09-08 20:37:33

标签: php oop dependency-injection

我目前正在使用PHP构建一个小项目,而不使用任何静态方法或全局状态。

我的班级'构造函数目前看起来有点像这样,我只是在创建对象实例时注入依赖对象。

class Something {

     public function __construct(Name\Space\Object $object, Other\Name\Space $object2) 
     {
         # Assign properties here
     }
}

在我的一个应用程序类中,我需要通过调用其方法来创建各种对象的新实例。有点像下面的东西;

class Something {

     public function getNewObject()
     {
         return new Name\Space\Object();
     }

     public function getNewObject2()
     {
         return new Name\Space\ObjectTwo();
     }
}

这是如何在遵守标准依赖注入规则的情况下完成的?

我不确定如何将对象注入构造函数,然后我只有一个实例,而我的应用程序中可能需要很多实例?

谢谢,

1 个答案:

答案 0 :(得分:0)

我相信函数是PHP中的第一类对象,所以这应该有效:

<?php
class MyClass {
  function foo() {
    return 'foo';
  }
};

class MyOtherClass {
  function __construct($klass) {
      $this->klass = $klass;
  }

  function get_instance() {
    return new $this->klass();
  }
}

$factory = new MyOtherClass(MyClass);
$obj     = $factory->get_instance();
?>
// <h1> value should equal foo
<h1><?php echo $obj->foo();?></h1>

编辑:测试并运作。