PHP规范PSR1(基本编码标准)介绍

标准的这一部分包括应该被认为是确保共享PHP代码之间高水平技术互操作性所需的标准编码元素。

本文档中的关键词“必须”,“必须”,“必需”,“应该”,“不应该”,“应该”,“不应该”,“推荐”,“可以”和“可选”按照RFC 2119中的描述进行解释。

1、总览

  • 文件必须只使用<?php和<?=标签。
  • 对于PHP代码,文件必须仅使用没有BOM的UTF-8。
  • 文件应该声明符号(类,函数,常量等)或引起副作用(例如生成输出,更改.ini设置等),但不应该同时执行这两种操作。
  • 命名空间和类必须遵循“自动加载”PSR:[PSR-0,PSR-4]。
  • 类名必须在StudlyCaps中声明。
  • 类常量必须以全部大写形式用下划线分隔符声明。
  • 方法名必须在camelCase中声明。

2、文件

2.1。 PHP标签
PHP代码必须使用long <?php?>标签或short-echo <?=?>标签;它不能使用其他标签变体。

2.2。字符编码
PHP代码必须只使用没有BOM的UTF-8。

2.3。副作用
一个文件应该声明新的符号(类,函数,常量等)并且不会产生其他副作用,或者它应该执行带副作用的逻辑,但是不应该同时执行这两个操作。

短语“副作用”意味着仅仅通过包括文件来执行与声明类,函数,常数等不直接相关的逻辑。

“副作用”包括但不限于:生成输出,明确使用require或include,连接到外部服务,修改ini设置,发出错误或异常,修改全局或静态变量,读取或写入文件,以及等等。

以下是具有声明和副作用的文件示例;即,要避免的一个例子:

<?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、命名空间和类名

命名空间和类必须遵循“自动加载”PSR:[PSR-0,PSR-4]。

这意味着每个类本身都在一个文件中,并且位于至少一个级别的命名空间中:顶级供应商名称。

类名必须在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,类常量,属性和方法

术语“类”指的是所有类,接口和特征。

4.1。常量
类常量必须以全部大写形式用下划线分隔符声明。例如:

<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

4.2。属性
本指南有意避免任何有关使用$StudlyCaps,$camelCase或$under_score属性名称的建议。
无论使用何种命名约定,都应该在合理的范围内始终如一地应用。该范围可以是供应商级别,包级别,类级别或方法级别。

4.3。方法
方法名必须在camelCase()中声明。

猜你喜欢

转载自blog.csdn.net/u013702678/article/details/83445784
今日推荐