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 ファイルを見ましたが、staticデフォルトではpublicですよね? では、なぜpublic static functionではなくstatic functionを入れるのですか? 背後に何か理由があるのでしょうか?

4

1 に答える 1

3

staticfunction は実際には and として定義できますが(protectedprivateの public static メソッドで使用されるいくつかのユーティリティ メソッドを考えてください)、その通りです。デフォルトではpublic.

実際、非静的メソッドもpublicデフォルトです。ドキュメントの引用:

publicクラス メソッドは、、、privateまたはとして定義できますprotected。明示的な可視性キーワードなしで宣言されたメソッドは publicとして定義されます。

その修飾子がここで明示的に指定されているのはなぜですか? おそらく、Python のマキシマ (明示的は暗黙的よりも優れている) をサポートする PHP チームによって作成されたものです。このようなアプローチの最も明白な利点の 1 つは、コードの統一性です。すべてのメソッドに対して、明確にわかる修飾子があります。

だからこういうルール…

クラス内のメソッドは、private、protected、または public 可視性修飾子のいずれかを使用して、常に可視性を宣言する必要があります

... 多くのチームやプロジェクトのコーディング規則では珍しくありません (この特定の規則はZF2 コーディング標準からの引用です)。

于 2013-06-04T01:28:58.667 に答える