との正確な違いを教えてreturn self::__construct()
くださいreturn new self()
。
オブジェクトが作成されたときに実際に呼び出しself::__construct()
からaを返すことができ、最初のオブジェクトが呼び出されなかっ__construct()
たかのようにオブジェクト自体を返すことができるようです。__construct()
との正確な違いを教えてreturn self::__construct()
くださいreturn new self()
。
オブジェクトが作成されたときに実際に呼び出しself::__construct()
からaを返すことができ、最初のオブジェクトが呼び出されなかっ__construct()
たかのようにオブジェクト自体を返すことができるようです。__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
メソッド自体から呼び出された場合、returningself::__construct()
は、メソッドが通常行うように、構築されたクラス自体を実際に返します。
return new self();
呼び出し元オブジェクトのクラスの新しいインスタンスを返します。
これにより、classesメソッドを呼び出すだけnew self()
で、クラスの新しいインスタンスが作成されると思います。self::__construct ()
__construct