PHP 类方法中的前导下划线是如何处理的?

2022-08-30 06:38:02

在查看各种PHP库时,我注意到很多人选择在某些类方法前面加上一个下划线,例如

public function _foo()

...而不是。。。

public function foo()

我意识到这最终归结为个人偏好,但我想知道是否有人对这种习惯的来源有所了解。

我的想法是,它可能是从PHP 4继承而来的,在类方法可以被标记为受保护或私有之前,作为一种暗示“不要从类外部调用此方法”的方式。然而,我也想到,也许它起源于我不熟悉的某个地方(一种语言),或者它背后可能有很好的理由,我会从知道中受益。

任何想法,见解和/或意见将不胜感激。


答案 1

它来自面向对象PHP(PHP 4)的糟糕时代。OO的实现非常糟糕,并且不包括私有方法之类的东西。为了弥补这一点,PHP 开发人员在方法的前面加上了一个下划线。在一些较旧的课程中,你会看到给它一些额外的权重。/**private*/ __foo() {

我从未听说过开发人员用下划线来开头所有方法,所以我无法开始解释导致这种情况的原因。


答案 2

我相信目前PHP的这些约定最权威的来源是PSR-2:编码风格指南,因为Zend框架是PSR的一部分:

属性名称不应以单个下划线为前缀来指示受保护或私有可见性。


推荐