9

我还是 PHP OO 编程技术的新手,我有一个非常简单的广泛问题,在一个类中实例化一个类然后将该实例传递给另一个类通常是不好的做法吗?

我想要的是能够通过每个用户请求创建我知道我将始终需要的特定类的实例。第二类不仅仅是一个辅助类,理想情况下,在我的应用程序中,它将是一个加载视图的“加载器”。

调用其他两个类的第一类:

require 'classTwo.php';
require 'classThree.php';

class first {
     public $classTwo, $classThree;

     public function __construct() {
          $this -> classTwo = new classTwo;
          $this -> classThree = new classThree;

          $this -> classThree -> displayNum( $this -> classTwo );

     }
}

第二类是助手类:

class classTwo {
     public function returnVal() {
          return 123;
     }
}

第三类是实际工作和最终展示会发生的动作类:

class classThree {
     public function displayNum( $instance ) {
          echo $instance -> returnVal();
     }
}

总的来说,我只想知道这是否是不好的做法,因为我以前从未见过这样做过。

提前致谢!

4

2 回答 2

12

注入任何依赖对象是一种很好的做法,因为这使您可以在单元测试期间非常轻松地进行模拟。

一般来说,如果你有ClassA并且它依赖于一个实例ClassB来运行,那么你可以做类似..

$objectB = new ClassB();
$objectA = new ClassA($objectB);

看看http://net.tutsplus.com/tutorials/php/dependency-injection-in-php/

编辑:构造函数注入将依赖项传递给新对象的构造函数(如上所示)。

Setter 注入使用一种方法来设置依赖关系,通常在依赖关系不重要时使用:

$objectB = new ClassB();
$objectA = new ClassA();
$objectA->setObjectB($objectB);
于 2013-03-16T00:41:28.807 回答
4

是的。这会使对您的first类进行单元测试变得很痛苦,因为其中存在硬编码的依赖项。

注入类的实例或注入工厂。

于 2013-03-16T00:38:23.557 回答