【发布时间】:2011-04-14 11:11:18
【问题描述】:
Zend Framework 2 是否会继续在类的私有成员和方法前添加下划线?例如:
class blah {
private $_name;
private function _doSomethingToName()
{
}
}
我看到它们在 ZF2 的开发版本中仍然存在。
【问题讨论】:
标签: php coding-style zend-framework2 private
Zend Framework 2 是否会继续在类的私有成员和方法前添加下划线?例如:
class blah {
private $_name;
private function _doSomethingToName()
{
}
}
我看到它们在 ZF2 的开发版本中仍然存在。
【问题讨论】:
标签: php coding-style zend-framework2 private
可能是的,根据the poll:
目前有 381 条回复:
- 57% 投票“是”(删除下划线)
- 38% 投票“否”(保留下划线)
- 4% 投票“没有意见”
【讨论】:
来自 zf2 编码标准
函数和方法
函数名称必须只包含字母数字字符。不允许使用下划线。函数名称中允许使用数字,但不鼓励使用。 ... 对于使用“private”或“protected”修饰符声明的对象上的方法,方法名称的第一个字符可以是下划线。这是方法名称中唯一可接受的下划线应用,并且不鼓励这样做(因为它使重构到公共可见性更加困难)。声明为“public”的方法不应包含下划线。
http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards
【讨论】:
是的,为什么不呢?这是一个惯例。
【讨论】:
这也是其他面向对象语言的约定。
查看以下两个代码约定指南:
但是所有这一切都应该是一个团队约定,这可能是 Zend 的方式。我相信在编写代码时应该使用这些代码约定来澄清和保持一致性。对我来说,Zend 对私有成员使用下划线前缀可以节省大量时间,尤其是当我对某个类不太熟悉时。
【讨论】:
我最近想知道这个问题,并搜索了整个 ZendFramework-2.1.4 源代码树以获得明确的答案。下划线约定似乎不再用于变量。在整个项目中,甚至没有一个以单个下划线开头的私有或受保护变量声明。以下三个文件中有少量变量以两个下划线开头,仅此而已。
\ZendFramework-2.1.4\library\Zend\View\Renderer\PhpRenderer.php \ZendFramework-2.1.4\library\Zend\View\Renderer\ConsoleRenderer.php \ZendFramework-2.1.4\library\Zend\Stdlib\AbstractOptions.php
这些文件中至少有一个包含以下注释:
注意:该类中的所有私有变量都以“__”为前缀。这是为了 * 将它们标记为内部实现的一部分,从而防止冲突 * 将变量注入渲染器。
关于方法,我找到了三个使用“私有函数_”的文件和 89 个使用“受保护函数_”声明方法的文件。还有三个文件使用“私有静态函数_”和七个文件使用“受保护的静态函数_”。这些只是项目中方法声明总数的极少数。
在 Zend Framework 2 中,这种约定似乎已死或将死。
编辑:看起来 ZF2 代码标准的这两部分清楚地说明了这一点。
http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards#CodingStandards-Variables http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards#CodingStandards-FunctionsandMethods
变量
变量名称必须只包含字母数字字符。不允许使用下划线。变量名中允许使用数字,但在大多数情况下不鼓励使用。
对于声明为私有或受保护可见性的变量,变量名的第一个字符可以是单个下划线。这是变量名中唯一可接受的下划线应用,不鼓励使用(因为它使重构为公共可见性变得更加困难)。
函数和方法
函数名称必须只包含字母数字字符。不允许使用下划线。函数名称中允许使用数字,但不鼓励使用。
函数名称必须始终以小写字母开头。当函数名包含多个单词时,每个新单词的第一个字母必须大写。这通常称为“camelCase”格式。
【讨论】: