这是我一直想知道的一种一般性调查。我通过其他人的代码注意到了很多,并且从来没有真正知道实际的原因,只是按照趋势,所以这里。
为什么一些方法和属性在前面用下划线命名,而其他方法和属性不是?
例如,具体使用时会function _method()
,何时会使用function method()
,换句话说,private $_someVariable
使用private $someVariable
?
答案 0 :(得分:22)
大多数情况下,这是PHP4的回归惯例,它不支持属性或方法的可见性,库开发人员使用_来表示应该被视为私有的东西,而不是直接从外部访问类。 PHP5确实具有可见性,但仍然经常保持约定。
答案 1 :(得分:11)
现在,在2013年,这是PSR-2编码指南的“正式”不良风格:
属性名称不应以单个下划线为前缀,以表示受保护或隐私可见性。
来源:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
答案 2 :(得分:7)
***遵循PSR-2编码指南:
属性名称不应以单个下划线为前缀 表示受保护或私人可见性
来源:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
***原因:
在属性名称之前没有下划线,比如$ _income,而不是使用 $的收入。下划线在某些框架中使用,可以 与PHP魔术变量混淆。
来源:http://www.geekgumbo.com/2013/05/19/psr-2-coding-style-guide/
答案 3 :(得分:1)
在private
方法private
字段之前offical document from php.net没有任何关于下划线的说法。
但请关注Zend Framework coding convention:
对于使用
private
或声明的对象的方法protected
修饰符,方法名称的第一个字符必须是 一个下划线。这是唯一可接受的应用程序 在方法名称中加下下划线。方法宣布"公共"永远不应该 包含下划线。
因此,我们应该开始使用下划线命名private
方法:)
<强>注意:
PHP将所有以__开头的符号保留为神奇的。它是 建议您不要在PHP中创建以__开头的符号 除非您想使用记录的魔法功能。
答案 4 :(得分:0)
为了以防万一,新的 PSR-12 声明它不得有下划线:
https://www.php-fig.org/psr/psr-12/
4.3 属性和常量 属性名称不得以单个下划线为前缀来表示受保护或私有可见性。
4.4 方法和函数 方法名称不得以单个下划线为前缀来表示受保护或私有可见性。