下面是從static
關鍵字PHP.net的文檔:爲什麼靜態屬性不能通過「 - >」訪問,但可以通過「::」訪問?
聲明爲靜態屬性不能與實例化的類對象(儘管一個靜態方法可以)進行訪問。
那麼,爲什麼下面的代碼工作?
這裏是他們的示例代碼(我已經縮短):
<?php
class Foo
{
public static $my_static = 'foo';
}
$foo= new Foo();
print $foo::$my_static; //print 'foo'
?>
爲什麼$foo::$my_static still
的作品嗎?謝謝大家!
你有'error_reporting()'打開了嗎?你有沒有收到任何警告或通知?該網頁確實注意到以下幾點:'小心: 在PHP 5中,調用非靜態方法會靜態生成E_STRICT級別警告。這可能是相關的。你使用什麼PHP版本? –
沒有這個例子是從PHP手冊字面上。我只是縮短了一點點。當然沒有警告或通知。我使用5.5 –
嘗試使用$ foo-> my_static或者在使用$ this-> my_static的foo類中創建一個函數,您將看到警告。你不能在實例化的類對象中使用它。 – kainaw