为什么构造函数不能返回对象以外的值,即使显式指示它这样做


Why constructors can't return a value other than object even if it is explicitly instructed to do so?

我注意到 PHP 类中的构造函数在从类外部隐式调用时不能返回对象以外的值:

class A
{
function __construct ()
{
   return FALSE;
}
function aFunctionInside ()
{
 $aVar = $this->__construct ();
 echo gettype($aVar); 
}
}
$A = new A;
$A->aFunctionInside (); // boolean
echo gettype ($A); //object

这种行为在任何情况下都有帮助吗?

创建对象时隐式调用构造函数(使用 new )。但是,在这种情况下不使用其返回值,并且与正在创建的对象无关。

创建对象的不是构造函数,因为即使没有构造函数,无论如何都会创建一个对象。更重要的是,当构造函数运行时,对象已经存在。

构造函数不需要返回值。根据手册,它没有返回类型:

构造 函数

void __construct ([ mixed $args = "" [, $... ]] )

当然,您可以自由地返回一些东西并在显式调用该函数时使用它,就像任何其他函数一样,但不要指望该调用会创建类的另一个实例化。为此,您需要使用new语法。

在对象创建期间隐式调用返回值时,返回值不起作用:在这种情况下,将忽略返回值。