2016-06-09 54 views
2

为什么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')); 
+1

*“,但无法找到任何东西$这”* - 哦? http://php.net/manual/en/language.oop5.basic.php *“在一​​个对象上下文中调用一个方法时,可以使用伪变量$ this''$ this'是对调用对象(通常是该方法所属的对象,但如果该方法是从次级对象的上下文静态调用的,则可能是另一个对象)。“* –

回答

3

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

selfstatic示例将用于静态调用或从类的实例外部调用。

您可以通过比较$bar$bar->test('TEST')看出它们具有不同的标识符。

这是相同的:

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