PHP编码规范(中文版)

213 阅读3分钟

PHP编码规范(中文版)导读

本文档是PHP互操作性框架制定小组(PHP-FIG :PHP Framework Interoperability Group)制定的PHP编码规范(PSR:Proposing a Standards Recommendation)中译版。

翻译过程中参照了 莫希爾(Mosil)手札 的繁体中文版,以及 Corrie Zhao 组织翻译的简体中文版, 译文中为了让语句通顺,便于理解,没有对原文逐字翻译,个别语句与原文原意可能略有偏差,希望告知指正。

目前官方已制定的规范包括以下六份文件:

  • PSR-0 (已弃用)

  • PSR-1

  • PSR-2

  • PSR-2补充

  • PSR-3

  • PSR-4

  • 2014/04/25 添加PSR-2补充文件以及修改之前版本中的翻译不当与错误。

  • 2014/07/31 添加PSR-4

  • PSR-1 基本代码规范

  • PSR-2 代码风格规范

  • PSR-2-1 补充文档

  • PSR-3 日志接口规范

  • PSR-4 自动载入

    我们希望你贡献的代码符合:

  • ThinkPHP 的编码规范

  • 适当的注释,能让其他人读懂

  • 遵循 Apache2 开源协议

  • 编辑器 / IDE 配合 PSR2 自动格式化工具

  • 如果想要了解更多细节或有任何疑问,请继续阅读下面的内容

  • 注意事项

  • 本项目代码格式化标准选用 [PSR-2](www.kancloud.cn/thinkphp/ph…%EF%BC%9B)

  • 类名和类文件名遵循 [PSR-4]([www.kancloud.cn/thinkphp/ph…www.kancloud.cn/thinkphp/php-fig-psr/3144)%EF%BC%9B)

  • 对于 Issues 的处理,请使用诸如 fix #xxx(Issue ID) 的 commit title 直接关闭 issue。

  • 系统会自动在 PHP 5.4 5.5 5.6 7.0 和 HHVM 上测试修改,其中 HHVM 下的测试容许报错,请确保你的修改符合 PHP 5.4 ~ 5.6 和 PHP 7.0 的语法规范;

  • 管理员不会合并造成 CI faild 的修改,若出现 CI faild 请检查自己的源代码或修改相应的单元测试文件;

以下是原版的导读:

PHP互操作性框架制定小组

组建本小组的目的是,通过在各项目的代表之间讨论他们共同的编码规范,以制定一个协作标准。本规范的主要面向对象是本小组的各个组成成员,当然,同时也欢迎关注本规范的其它[PHP](www.oschina.net/p/php)社区采用本规范。

提交规范建议

可以通过以下方式给本规范提交建议:

  • fork [PSR代码库](github.com/php-fig/fig-standards),创建并检出一个分支,在 proposed/ 下添加 规范建议,然后 push 分支到 Github,最后给我们发送一个 pull request;又或者

  • 在 Github 下新建一个讨论 ticket;又或者

  • 在 [邮件列表](groups.google.com/group/php-fig/) 中提交建议。

成为投票成员

注意,你 不需要 成为投票成员才能在 [邮件列表](groups.google.com/group/php-fig/) 中发表言论。

想要成为投票成员,你必须发送一封邮件到 [邮件列表](groups.google.com/group/php-fig/) 中。

  • 邮件主题格式如下: Membership Request: {你的名字} ({参与的项目名称})

  • 邮件内容应包括你的名字、你参与的项目名称、项目的地址以及其它相关信息。

目前的成员会对你的加入请求进行投票。

请不要在一份申请中提交多个加入请求,每份申请只能提交一份请求。

目前的成员及其代表项目列表

  1. Nate Abele: Lithium

  2. Nils Adermann: [php](www.oschina.net/p/php)BB

  3. Brett Bieber: PEAR, PEAR2

  4. Guilherme Blanco: Doctrine, Doctrine2, et al.

  5. Jordi Boggiano: Composer, Packagist

  6. Pádraic Brady: Zend Framework

  7. Karma Dordrak: Zikula

  8. Paul Dragoonis: PPI, PPI2

  9. William Durand: Propel, Propel 2

  10. Don Gilbert: Joomla

  11. Cal Evans: the community at large

  12. Larry Garfield: Drupal

  13. Ivan Habunek: Apache log4[php](www.oschina.net/p/php)

  14. Paul M. Jones: Solar Framework, Aura Project

  15. Karsten Dambekalns: TYPO3 Flow, TYPO3 Neos

  16. Larry Masters: Cake[PHP](www.oschina.net/p/php), Cake[PHP](www.oschina.net/p/php) 2

  17. John Mertic: SugarCRM

  18. Taylor Otwell: Laravel

  19. Ryan Parman: Amazon Web Services SDK

  20. Evert Pot: SabreDAV

  21. Fabien Potencier: Symfony, Symfony2

  22. Mike van Riel: phpDocumentor

  23. Andre Romcke: eZ Publish

  24. Phil Sturgeon: PyroCMS

  25. Lukas Smith: Jackalope

  26. Kris Wallsmith: Assetic, Buzz

  27. David Zülke: Agavi