PHP命名空间是否有一个成熟的命名规范?

39

到目前为止,我已经看到许多不同的PHP命名空间命名约定。一些人使用 PascalCase\Just\Like\For\Classes,有些人使用 underscored\lower_case\names,甚至有些人使用Java约定的包名称:com\domain\project\package

问题很简单--是否可以称任何这些(或其他)约定为成熟的?为什么?有没有任何受权机构比如Zend或知名PHP框架开发人员推荐其中的任何一个?

4个回答

29

15
这并没有回答问题。我唯一看到的关于大写的提及是“供应商名称、命名空间和类名称中的字母字符可以是任何小写字母和大写字母的组合。” - mpen

5
我认为目前还没有任何被广泛接受的规范,但有一份RFC在讨论PEAR2的命名标准:http://wiki.php.net/pear/rfc/pear2_naming_standards 我认为命名空间是变量的一种形式,因此应该遵循相同的约定。对于自由变量(与对象成员不同),我通常更喜欢使用小写下划线,因此对我来说最自然的是namespace\ClassName。这也符合其他语言中最普遍的约定。另一方面,对于5.3之前的伪命名空间,也可以提出同样的论点,但这里事实上的标准似乎是使用驼峰命名法。

1

个人而言,我喜欢使用大驼峰命名法来书写类名,小驼峰命名法来书写类属性和方法,以及在类属性前加下划线。

其他的局部变量我也使用小驼峰命名法,没有下划线前缀。对象实例始终使用大驼峰命名法等等。我并不认为有一种最好的方式,你只需要保持一致性,遵循编码规范。这样可以让你更快地阅读代码,并且能够更快地理解每行代码所代表的含义。


分享个人标准并不能为回答这个问题做出贡献。你提到的所有事情都没有提供支持你观点的来源。简而言之:在发布答案时,请专注于问题本身。 - pjvleeuwen
2
虽然你说得对,但这个答案已经发布了7年之久。 - Ben Fransen
确实,那是很久以前的事了,我从不看那些日期。如果你考虑一下就会发现很神奇:这个问题及其答案仍然吸引着访问者并帮助人们学习。SO是这样一个标志性的存在。这也是我的投票理由:对于为特定问题增加价值的答案进行点赞,对于没有增加价值的答案进行踩。这确保了SO的质量:只有作者才能删除(有些例外情况),但社区决定。我觉得这非常优雅。请允许我强调一下,这与个人无关:我看到您发布了许多高质量的答案。我只是认为这不是其中之一 :-) - pjvleeuwen

0
有人可能会说,PascalCase(除缩写和首字母缩略词外)是首选。所以,例如,以下是适当的版本:
- 'Curl' - 'CurlResponse' - 'HTTPStatusCode' - 'URL' - 'BTreeMap'(B树映射) - 'Id'(标识符) - 'ID'(身份证明文件) - 'Char'(字符) - 'Intl'(国际化) - 'Radar'(无线电探测和测距)
来源:参考 wiki.php.net
将编码标准扩展到明确指定在编写用户级类名时如何处理缩写和首字母缩略语/首字母缩写。当前规则是:
类应该给予描述性的名称。尽可能避免使用缩写。类名中的每个单词都应以大写字母开头,不带下划线分隔符(以大写字母开头的驼峰式)。类名应以“父集”(例如扩展名)的名称为前缀...
来源:在github.com 虽然它声明了应该避免使用缩写,但对于如果使用缩写,特别是首字母缩略语/首字母缩写的情况,它保持沉默。现在基本上有三种选择:
1. PascalCase除缩略语/首字母缩略语外 - 这是大多数用户级类名的书写方式,与许多其他编程语言的方法相匹配; 2. 始终使用PascalCase - 这基本上是PSR-1定义的,但这将使大多数当前存在的用户级类名无效; 3. 什么也不做 - 当然,这意味着任何方法都被允许,并且围绕此主题的社区讨论将继续。
“我们应该使用什么类命名风格?”(最终结果):
- PascalCase除缩略语:15 - 始终使用PascalCase:11

来源:wiki.php.net


PSR-1

  1. 命名空间和类名

    ...

    类名必须使用 StudlyCaps 命名法。

    ...

来源:php-fig.org


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接