Php 构造函数返回一个对象,而不是一个值
为什么构造函数返回对象而不是返回值(布尔值)Php 构造函数返回一个对象,而不是一个值,php,object,constructor,return,Php,Object,Constructor,Return,为什么构造函数返回对象而不是返回值(布尔值) 构造函数只能返回对象的新实例。 您可以尝试使用静态函数调用来调用构造函数并返回false或新对象。构造函数:您做得不对 按照他们的名字做:构造一个对象的新实例。因此,构造函数返回的唯一有意义的东西就是该对象的实例。请注意,您几乎不会看到带有显式return语句1的构造函数 完成我认为您想要做的事情的更干净的方法是使用: 1他们是被允许的,因此可能有一个令人信服的理由。只是现在想不起来。构造函数的返回值被new操作符忽略。new操作符将始终返回一个对象
构造函数只能返回对象的新实例。 您可以尝试使用静态函数调用来调用构造函数并返回false或新对象。构造函数:您做得不对 按照他们的名字做:构造一个对象的新实例。因此,构造函数返回的唯一有意义的东西就是该对象的实例。请注意,您几乎不会看到带有显式
return
语句1的构造函数
完成我认为您想要做的事情的更干净的方法是使用:
1他们是被允许的,因此可能有一个令人信服的理由。只是现在想不起来。构造函数的返回值被
new
操作符忽略。new
操作符将始终返回一个对象。当有类似代码时
class A {
function __construct() {
return 1;
}
}
class B extends A {
function __construct() {
var_dump(parent::__construct());
}
}
new B();
您可以看到构造函数有一个返回值。当然,编写这样的代码毫无意义
为了处理构造函数中的错误,必须使用异常。另一种方法是某种工厂方法
class C {
private function __construct() { }
private function init() {
if (something_goes_wrong()) {
return false;
}
}
public static createInstance() {
$retval = new self;
if (!$retval->init()) {
return false;
}
return $retval;
}
}
那为什么他们允许退货呢?这个问题的第一个答案会帮助你
class A {
function __construct() {
return 1;
}
}
class B extends A {
function __construct() {
var_dump(parent::__construct());
}
}
new B();
class C {
private function __construct() { }
private function init() {
if (something_goes_wrong()) {
return false;
}
}
public static createInstance() {
$retval = new self;
if (!$retval->init()) {
return false;
}
return $retval;
}
}