return self::__construct()
你能告诉我和之间的确切区别return new self()
吗?
似乎一个人实际上可以在创建对象时self::__construct()
从__construct()
调用中返回 a ,返回对象本身,就好像第一个__construct()
从未被调用过一样。
return self::__construct()
你能告诉我和之间的确切区别return new self()
吗?
似乎一个人实际上可以在创建对象时self::__construct()
从__construct()
调用中返回 a ,返回对象本身,就好像第一个__construct()
从未被调用过一样。
这在代码中得到了最好的说明:
class MyClass {
public $arg;
public function __construct ($arg = NULL) {
if ($arg !== NULL) $this->arg = $arg;
return $this->arg;
}
public function returnThisConstruct () {
return $this->__construct();
}
public function returnSelfConstruct () {
return self::__construct();
}
public function returnNewSelf () {
return new self();
}
}
$obj = new MyClass('Hello!');
var_dump($obj);
/*
object(MyClass)#1 (1) {
["arg"]=>
string(6) "Hello!"
}
*/
var_dump($obj->returnThisConstruct());
/*
string(6) "Hello!"
*/
var_dump($obj->returnNewSelf());
/*
object(MyClass)#2 (1) {
["arg"]=>
NULL
}
*/
var_dump($obj->returnSelfConstruct());
/*
string(6) "Hello!"
*/
return self::__construct()
返回由 objects方法返回的值。__construct
它还会再次运行构造函数中的代码。当从类__construct
方法本身调用时,返回self::__construct()
实际上将返回构造的类本身,就像该方法通常所做的那样。
return new self();
返回调用对象类的新实例。
我相信这new self()
会创建一个新的类实例,而self::__construct ()
只调用类__construct
方法。