我有一个在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)
也可以看看: