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

虽然static函数实际上可以定义为protectedand private(考虑另一个公共静态方法使用的一些实用方法),但你是对的,默认情况下它是public.

事实上,非静态方法也是public默认的。引用文档

类方法可以定义为publicprivateprotected。没有任何显式可见性关键字声明的方法被定义为 public

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

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

类中的方法必须始终使用私有、受保护或公共可见性修饰符之一来声明它们的可见性。

...在许多团队和项目的编码约定中并不少见(此特定规则是对ZF2 编码标准的引用)。

于 2013-06-04T01:28:58.667 回答