PHP:在构造函数中使用$ this

Dan*_*Dan 4 php construct

我有一个在PHP中使用这种语法的想法.它说明了创建对象有不同的回退方式

function __construct() {

   if(some_case())
      $this = method1();
   else
      $this = method2();

}
Run Code Online (Sandbox Code Playgroud)

这是一场噩梦吗?还是有效?

Pek*_*ica 13

还是有效?

它不起作用.您不能取消或从根本上改变在构造函数中创建的对象.您也可以不设置返回值.您所能做的就是设置对象的属性.

解决这个问题的一种方法是使用单独的"工厂"类或函数来检查条件并返回正确对象的新实例,如下所示:

function factory() {

   if(some_case())
      return new class1();
  else
      return new class2();

}
Run Code Online (Sandbox Code Playgroud)

也可以看看:

  • 应该是一个静态的方法. (2认同)