PHP传递一个类的实例向另一个类(PHP Passing an instance of a clas

2019-07-21 18:15发布

我仍然是一种新的PHP的面向对象编程技术,我有一个非常简单的宽泛的问题,它是一般不好的做法来实例化一个类中的类,则该实例传递到另一个类?

我要的是能够创造,我知道我将永远需要通过每个用户请求一个特定的类的实例。 二类是比什么都只是一个辅助类的更多,最好是在我的应用程序将是一个“装载机”加载的意见。

第一类调用其他两个类:

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();
     }
}

总的来说,我只是想知道这是不好的做法,因为我从来没有见过它之前完成。

提前致谢!

Answer 1:

这是注入任何依赖对象很好的做法,因为这可以让你的单元测试过程中很容易嘲笑。

一般来说,如果你有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);


Answer 2:

是。 这将使它成为一个痛苦的单元测试你的first类,因为有它硬编码的依赖性。

无论是注射类的实例或注入的工厂。



文章来源: PHP Passing an instance of a class to another class