php静态方法-“静态函数”和“公共静态函数”有啥区别?

Posted

技术标签:

【中文标题】php静态方法-“静态函数”和“公共静态函数”有啥区别?【英文标题】:php static methods - what is the difference between "static function" and "public static function"?php静态方法-“静态函数”和“公共静态函数”有什么区别? 【发布时间】:2014-04-27 13:59:07 【问题描述】:

正如标题所说,我似乎看不出公共静态和普通旧静态之间有什么区别..即

public static function visitorUserCreate( $data  )
    

static function visitorUserCreate( $data  )
    

两者似乎都是公开的,如果它们是默认情况下宣布公开的意义何在?

【问题讨论】:

无低级差异。默认访问权限是public,但是当您看到public 和下一行private 时,它使代码更具可读性,对于两种不同的方法,而不是首先跳过public,然后在第二个看到private /跨度> Default visibility of class methods in php 的可能重复项 【参考方案1】:

来自PHP manual documentation for Static Keywords:

为了与 PHP 4 兼容,如果没有使用可见性声明,则属性或方法将被视为已声明为 public。

回答你的问题:

两者似乎都是公开的,如果它们是默认情况下声明公开的意义何在?

没有。声明 public 的目的是为了可读性。在编译器级别没有区别,但是声明它通常是好的设计。

【讨论】:

基本问题是 “如果默认情况下,声明 public 有什么意义?”这导致我们就为什么显式很重要进行了长时间的讨论。【参考方案2】:

没有区别。如果未声明,它将是公共的,因为这是默认行为。来自PHP.net:

类方法可以定义为公共的、私有的或受保护的。方法 没有任何显式可见性关键字的声明被定义为 公开。

但是,有一点。这是来自PHP The Right Way的引述:

理想情况下,您应该编写符合已知标准的 PHP 代码。 这可以是 PSR 的任意组合,或编码之一 PEAR 或 Zend 制定的标准。这意味着其他开发人员可以 轻松阅读和使用您的代码,以及实现 即使在使用大量组件时,组件也可以保持一致性 第三方代码。

根据PSR-2,这是PHP-FIG认可的风格推荐之一:

必须在所有属性和方法上声明可见性;抽象的 final 必须在可见性之前声明;静态必须是 在可见性之后声明。

【讨论】:

以上是关于php静态方法-“静态函数”和“公共静态函数”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将自定义代码添加到公共静态函数中? (woocommerce update_order_review)

PHP中的静态方法与非静态方法有啥区别吗?

类的静态函数和类的构造函数有啥关系?

全局静态函数加上static和不加上有啥区别呢 尽量详细点 可加分哦

LNK2019 错误,但 Intellisense 工作正常

python 静态方法 理解