此PHP标准包含了如何去编写高通用性代码中那些标准元素(class,function ,ect.)的正确姿式!
在RFC 2119文档中描述了关键字 “MUST”,“MUST NOT”,“SHALL”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY”,“OPTIONAL”。php
文件必须使用<?php
和<?=
标签打头。html
文件编码必须使用UTF-8 无BOM头的格式。git
文件可声明类,方法,常量,或者引起“反作用”(输出语句,改变PHP.ini的代码,etc.),可是不该该同时包含着两项。github
命名空间须要遵循自动加载规范:PSR-0,PSR-4。ui
类名必须为StudlyCaps格式(首字母大写的驼峰式)。编码
常量必需要由大写字母组成,单词间使用下划线(_)链接。spa
方法必需要使用camelCase格式(首字母小的的驼峰式)翻译
PHP代码必须写在<?php ?>
或者简短声明<?=?>
(php.ini中short_open_tag为On的状况下,不推荐),不能使用其余标签。code
PHP代码必须使用UTF-8无BOM头的格式保存。htm
一个文件能够声明类,方法,常量等,也能够执行那些"反作用"逻辑,可是不能同时作着两件事!
“反作用”这个词表明这个文件执行了跟此文件中声明的类,方法,常量没有直接联系的逻辑。
“反作用”包含:产生输出,直接使用require
和include
包含文件,链接外部服务,修改php.ini中的设置,引起错误或异常,修改全局或静态变量,读写文件等等。
下面这个例子就是一个文件同时包含声明和“反作用”
<?php // 反作用:修改了php.ini的配置 ini_set('error_reporting', E_ALL); // 反作用:引入文件 include "file.php"; // 反作用:产生输出 echo "<html>\n"; // declaration function foo() { // function body }
下面这个例子只包括声明,没有“反作用”
<?php // declaration function foo() { // function body } // 条件语句不是“反作用” if (! function_exists('bar')) { function bar() { // function body } }
命名空间和类命名必须遵循一项自动加载规范:PSR-0或PSR-4。
这表示一个文件只能有一个类,而且这个类只有有一层命名空间:顶层空间为开发商名
类名必须声明为StudlyCaps
(首字母大写的驼峰式)。
PHP5.3和以后的版本必须使用规范的命名空间。
例子:
<?php // PHP 5.3 and later: namespace Vendor\Model; class Foo { }
PHP5.2.x 和以前的版本应该使用由Vendor_
+类名的形式声明类,做为虚拟命名空间。
<?php // PHP 5.2.x and earlier: class Vendor_Model_Foo { }
这里的类指 Classes,interfaces,traits。这三种类型都要遵照如下规范
类常量必须由大写字母组成,单词间由下划线组成。例:
<?php namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; }
属性名可使用$StudlyCaps(大写字母开头的驼峰式), $camelCase(小写字母开头的驼峰式), $under_score(下线线做为分隔符的命名)。一旦使用了其中的某一项命名凡是,应该在必定的代码内保持一致(库,包,类,或者方法范围内)。
方法必须被声明为camelCase(小写字母打头的驼峰似)。
注:本文非标准翻译