2013-06-04 61 views
2
<?php 
class newProfileTabs_Listener 
{ 
    public static function template_hook ($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) 
    { 
     if ($hookName == 'member_view_tabs_heading') 
     { 
      $contents .= '<li><a href="{$requestPaths.requestUri}#ourTab">Our Tab</a></li>'; 
     } 
    } 
} 
?> 

問:爲什麼在PHP中靜態函數之前公開?

我看到這上面的PHP文件,static默認爲public,對不對?所以爲什麼把public static function,而不是static function,有沒有背後的原因?

+0

老實說,它可能是C++/Java中的慣例的保留,其中(我相信)「public」關鍵字不會是可選的。當然,關鍵字在PHP5中是可選的,以便與PHP4向後兼容,PHP4沒有可見性的概念。 –

+0

@FrankFarmer是對的。此外,這提高了代碼的可讀性,並且使用良好的編輯器,輸入內容並不多。 – TheHippo

回答

3

儘管static函數實際上可以定義爲protectedprivate(考慮一些其他公用靜態方法使用的實用方法),但您是對的,默認情況下它是public

實際上,非靜態方法默認也是public。引述doc

類方法可以被定義爲publicprivate,或者protected。方法 聲明沒有任何明確的可見性關鍵字被定義爲 public

爲什麼顯式指定的修飾符?那麼,它可能是由PHP團隊編寫的,它支持Python的最大值:explicit is better than implicit。這種方法的一個最明顯的優點是代碼的一致性:對於方法,都有一個清楚可見的修飾符。

這就是爲什麼像這樣的規則...

方法內部類MUST總是 宣佈自己的知名度使用私有,保護或公共可視性修飾符之一。

......在許多團隊和項目的編碼約定不incommon(這個特殊的規則是從ZF2 coding standards報價)。

相關問題