使用new $ this创建对象

时间:2016-06-09 19:20:03

标签: php oop

为什么new $this有效?我理解new selfnew 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'));

2 个答案:

答案 0 :(得分:3)

它从实例化的类中返回一个新的实例。

selfstatic示例将在静态调用时使用,或者从类的实例外部使用。

您可以通过将$bar$bar->test('TEST')进行比较来确定他们有不同的标识符。

它等同于:

public function test($str) {
    $class = get_class($this);
    return new $class($str);
}

答案 1 :(得分:0)

我认为你想要完成的是:

$foo = clone $this;

documentation。希望它有所帮助