2016-06-09 19 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); 
} 
相關問題