像:
public
$foo = null,
$bar = 10;
protected
$_stuff = null,
$_moreStuff = 5;
很多人似乎都是这样做的。为什么呢?
不是这个不一致的命名(就像一些PHP函数是:))?
答案 0 :(得分:11)
这是php5之前的一个旧约定。
Php4只有公众可见度,不知何故,人们希望能够判断一个属性是公共的还是私有的(方法相同)。下划线前缀表示私有成员或方法,不应从外部使用。
虽然严格来说,php5是不必要的,你可以明确地标记一个类成员的可见性,但这个约定仍然很常见。用户认为这样可以更轻松地查找代码,因为您可以立即查看是否也可以从外部调用该功能。这取决于个人偏好,或者是给定项目的编码风格。
答案 1 :(得分:9)
这真的归结为一件事:个人偏好。
我个人也是使用该命名约定的人。使用下划线为protected
或private
添加任何内容,无论是变量还是函数,都可以让我和我经常使用的任何其他程序员都知道该变量是全局的,并且无法在外部访问当前的类/上下文。
有助于澄清用例的一个例子是类方法:
class Example {
public function firstFunction() {
// do stuff
}
protected function _secondFunction() {
// do more stuff
}
}
当我编写使用类Example
的代码,或者在类本身内部工作时,如果我看到_secondFunction()
,我会立即知道它不是公共函数,因为启动{ {1}}因此无法在课堂外访问;无需去找实际的函数声明并查看修饰符。另一方面,我会知道_
是公开的,因为它不是以一个开头的。
答案 2 :(得分:3)
下划线表示变量具有一些特殊属性(预定义,可以从组织更改为组织或程序员更改为程序员)。传统上它意味着某些东西不公开。甚至函数有时也被写成:
protected function _myProtectedFunction(){}
但是请注意,PHP保留所有以__
(两个下划线)开头的函数名称都是神奇的,建议你不要在PHP中使用带__
的函数名,除非你想要一些记录的魔法功能。
答案 3 :(得分:1)
作为比较,Python没有设计私有/公共,并使用下划线来传达区别。参见PEP 8的这一部分:
http://www.python.org/dev/peps/pep-0008/#designing-for-inheritance
所以它不一定只是只是一个旧的PHP5之前的惯例 - 人们可能出于与Python相同的原因故意这样做。
答案 4 :(得分:-2)
这绝对只是个人偏好。他们可能会这样做,因为$ _GET和$ _SESSION已经像PHP一样完成了。