🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# PSR-1:基本编码标准 标准的这一部分包括应该被认为是确保共享PHP代码之间高度技术互操作性所需的标准编码元素。 本文件中的关键词“必须”,“不得”,“必须”,“应该”,“不应该”,“应该”,“不应该”,“推荐”,“可以”和“可选”按照[RFC 2119中的](http://www.ietf.org/rfc/rfc2119.txt)描述进行解释。 ## [1.概述](http://phpfig.p2hp.com/psr/psr-1/#1-overview) * 文件必须只使用`<?php`和`<?=`标签。 * 对于PHP代码,文件必须仅使用没有BOM的UTF-8。 * 文件应该*任一*声明的符号(类,函数,常量等)*或*引起副作用(例如产生的输出,修改的.ini设置,等等),但是不应该这样做既。 * 命名空间和类必须遵循“自动加载”PSR:\[[PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md),[PSR-4](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md)\]。 * 类名必须声明`StudlyCaps`。 * 类常量必须以全部大写形式用下划线分隔符声明。 * 必须声明方法名称`camelCase`。 ## [2.文件](http://phpfig.p2hp.com/psr/psr-1/#2-files) ### [2.1。PHP标签](http://phpfig.p2hp.com/psr/psr-1/#21-php-tags) PHP代码必须使用长标签或短回声标签;它不能使用其他标签变体。`<?php ?>` ### [2.2。字符编码](http://phpfig.p2hp.com/psr/psr-1/#22-character-encoding) PHP代码必须只使用没有BOM的UTF-8。 ### [2.3。副作用](http://phpfig.p2hp.com/psr/psr-1/#23-side-effects) 以下是具有声明和副作用的文件示例; 即,要避免的一个例子: ~~~ <?php // side effect: change ini settings ini_set('error_reporting', E_ALL); // side effect: loads a file include "file.php"; // side effect: generates output echo "<html>\n"; // declaration function foo() { // function body } ~~~ 以下示例是包含没有副作用的声明的文件; 即要模仿的例子: ~~~ <?php // declaration function foo() { // function body } // conditional declaration is *not* a side effect if (! function_exists('bar')) { function bar() { // function body } } ~~~ ## [3.命名空间和类名](http://phpfig.p2hp.com/psr/psr-1/#3-namespace-and-class-names) 命名空间和类必须遵循“自动加载”PSR:。 这意味着每个类本身都在一个文件中,并且位于至少一个级别的命名空间中:顶级供应商名称。 类名必须声明`StudlyCaps`。 为PHP 5.3编写的代码,必须使用正式的命名空间。 例如: ~~~ <?php // PHP 5.3 and later: namespace Vendor\Model; class Foo { } ~~~ 为5.2.x编写的代码,在SHOULD之前应该使用`Vendor_`类名称前缀的伪命名约定。 ~~~ <?php // PHP 5.2.x and earlier: class Vendor_Model_Foo { } ~~~ ## [4.类常量,属性和方法](http://phpfig.p2hp.com/psr/psr-1/#4-class-constants-properties-and-methods) 术语“类”指的是所有类,接口和特征。 ### [4.1。常量](http://phpfig.p2hp.com/psr/psr-1/#41-constants) 类常量必须以全部大写形式用下划线分隔符声明。例如: ~~~ <?php namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; } ~~~ ### [4.2。属性](http://phpfig.p2hp.com/psr/psr-1/#42-properties) 本指南有意避免关于使用任何建议`$StudlyCaps`,`$camelCase`或`$under_score`属性名称。 无论使用何种命名约定,都应该在合理的范围内一致地应用。该范围可以是供应商级别,包级别,类级别或方法级别。 ### [4.3。方法](http://phpfig.p2hp.com/psr/psr-1/#43-methods) 必须声明方法名称`camelCase()`。