为什么构造函数不能返回除object之外的值,即使它被明确指示这样做?

时间:2016-01-24 17:22:30

标签: php constructor

我注意到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

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

1 个答案:

答案 0 :(得分:2)

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

创建对象的构造函数不是,因为即使没有一个,也会创建一个对象。还有什么,当构造函数运行时,对象已经存在。

构造函数不期望返回值。根据{{​​3}},它没有返回类型:

  

构造

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

当然,您可以自由地返回某些内容并在明确调用该函数时使用它,就像使用任何其他函数一样,但不要期望该调用创建您的类的另一个实例。为此,您需要使用new语法。

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