2012-02-15 41 views
1
<?php 
    class a { 

    function fn() { 
      echo "My name here"; 
     } 

    } 

a::fn();  
?> 

我使用範圍解析運算符來檢查它是如何工作的,當我在瀏覽器,它正確打印檢查沒有給出錯誤。PHP在範圍解析操作

但相同的代碼,當我運行nusphere PHPED調試工具,它給了我錯誤,如

嚴格的標準:非靜態方法:: FN()不應該被稱爲靜態在d:\ PROGRAM_FILES \ WAMP \ WWW \ test \ index.php 12行 我的名字在這裏

但它打印結果正確。我可以知道什麼是真正的問題,我是PHP類的新手。我在谷歌嘗試,但我沒有得到理由。

先感謝

+1

你需要調用它作爲一個靜態menthod?爲什麼不嘗試: $ a = new a(); $ - > fn(); – azzy81 2012-02-15 11:54:11

+1

錯誤報告的不同設置可以創建您遇到的差異。 – hakre 2012-07-12 15:30:07

回答

3

你看到的錯誤是E_STRICT,這可能不是你的服務器上顯示。如果您設置了error_reporting(E_ALL | E_STRICT),您可能會看到該錯誤。

您看到錯誤的原因是函數fn未聲明爲靜態,因此您不一定可以靜態調用它(如a::fn())。你會調用非靜態方法是這樣的:

$a = new a(); 
$a->fn(); 

爲了使您的功能的靜態,改變方法聲明:

public static function fn() { 
    // ... 
} 

編輯This manual page顯示類似你上面的例子。

1

你是否需要將它稱爲靜態menthod?爲什麼不嘗試:

$a = new a(); 
$a->fn(); 

這應該工作^^