2009-11-30 88 views
27

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

问题是非常简单的 - 这些(或其他)公约中的任何一个都可以称为公认的?为什么?他们是否有像Zend这样的权威人士或知名PHP框架的开发者推荐?

回答

25

一个PHP标准工作组做出贡献的许多不同的PHP框架和项目达想出了以下建议进行适当的命名空间的使用:

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

+10

这只是回答这个问题。我看到的唯一提到的大写字母是“供应商名称,名称空间和类名中的字母字符可以是小写和大写的任意组合” – mpen 2014-06-30 06:21:35

-1

就我个人而言,我喜欢编写类名较高的camelcase,类属性和方法降低camelcase和带有下划线前缀的类属性。

其他本地变量我也写下没有下划线前缀的camelcase。对象实例总是写成uppper camelcase等等。我不认为有一个最好的方法,你只需要符合你的编码标准。这为您提供了通过代码更快地阅读的优势,它可以更快地了解哪些代码行正在发生什么。

+0

-1分享您的个人标准不回答贡献这个特别的问题。你提到的所有内容都没有提及任何支持你观点的资料。简而言之:请在发布答案时重点关注问题。 – 2016-12-17 11:47:17

+0

虽然你是对的,但这个答案已经发布了7年以前。 – Ben 2017-01-26 14:40:59

+0

事实上,相当一段时间以前,我从不看那些日期。令人惊讶的是,如果你想一想:问题和答案仍然吸引访客,并帮助人们学习。 SO就是这样一个图标。这也是我投票背后的推理:对特定问题增加价值的答案进行增票,对那些不支持的人进行倒票。这确保了SO的质量:只有作者可以删除(某些例外),但社区决定。我觉得它非常优雅。让我强调这不是个人问题:我看到你发布了许多高质量的答案。我只是认为这不是其中之一:-) – 2017-01-26 19:14:02

4

我不认为你可以说有在这一点上完善的东西,但有一个RFC讨论它PEAR2:http://wiki.php.net/pear/rfc/pear2_naming_standards

我的看法是,命名空间是变量的形式,因此应遵循与他们相同的惯例。我更喜欢lowercase_underscore免费变量(而不是对象成员),所以对我来说最自然的将是namespace\ClassName。这也符合其他语言中最流行的惯例。另一方面,可以为5.3之前的伪命名空间提供相同的参数,但这里的事实标准似乎是使用CamelCase。