为什么在PHP中使用静态函数之前公开?

时间:2013-06-04 01:25:51

标签: php visibility static-methods

<?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,是否有任何理由呢?

1 个答案:

答案 0 :(得分:3)

虽然static函数实际上可以定义为protectedprivate(考虑另一种公用静态方法使用的一些实用方法),但你是对的,默认情况下它是{{ 1}}。

实际上,默认情况下非静态方法也是public。引用doc

  

类方法可以定义为publicpublicprivate。方法   声明没有任何显式可见性关键字被定义为   公开

为什么明确指定此修饰符?好吧,可能它是由PHP团队编写的,支持Python的最大值:explicit is better than implicit。这种方法最明显的优点之一是代码的一致性:对于每个方法,都有一个清晰可见的修饰符。

这就是为什么这样的规则......

  

必须内的方法总是声明它们的可见性   使用私有,受保护或公共可见性修饰符之一。

......在许多团队和项目的编码惯例中并不是一致的(这个特殊规则是ZF2 coding standards引用的。)