为什么new $this
有效?我理解new self
或new static
,但无法找到$this
的任何内容:
class Foo {
private $str;
public function __construct($str) {
$this->str = $str;
}
public function test($str) {
return new $this($str);
}
}
$bar = new Foo('bar');
var_dump($bar->test('TEST'));
答案 0 :(得分:3)
它从实例化的类中返回一个新的实例。
self
和static
示例将在静态调用时使用,或者从类的实例外部使用。
您可以通过将$bar
与$bar->test('TEST')
进行比较来确定他们有不同的标识符。
它等同于:
public function test($str) {
$class = get_class($this);
return new $class($str);
}
答案 1 :(得分:0)