PSR-1 基础编码规范

Posted jack-he

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PSR-1 基础编码规范相关的知识,希望对你有一定的参考价值。

  

基本代码规范
RFC 2119中的 必须(MUST) 不可(MUST NOT)建议(SHOULD)不建议(SHOULD NOT)可以/可能(MAY)等关键词将在本节用来做一些解释性的描述。

1. 概述

 

  • 源文件必须只使用 <?php <?= 这两种标签。

  • 源文件中php代码的编码格式 必须 只使用不带字 节顺序标记(BOM) 的 UTF-8

  • 一个源文件建议只用来做声明(类(class)函数(function)常量(constant)等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。

  • 命名空间(namespace)类(class) 必须遵守PSR-0标准。

  • 类名(class name) 必须使用骆驼式(StudlyCaps)写法 (译者注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。

  • 类(class)中的常量必须只由大写字母和下划线(_)组成。

  • 方法名(method name) 必须使用驼峰式(cameCase)写法(译者注:后文将直接用camelCase表示)。

 

2. 文件

  2.1. PHP标签

 

    PHP代码必须只使用长标签(<?php ?>)或者短输出式标签(<?= ?>);而不可使用其他标签。

 

  2.2. 字符编码

 

    PHP代码的编码格式必须只使用不带字节顺序标记(BOM)UTF-8

 

     

  2.3. 副作用

 

    一个源文件建议只用来做声明(类(class)函数(function)常量(constant)等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),但不建议同时做这两件事。

 

    短语副作用(side effects)的意思是 在包含文件时 所执行的逻辑与所声明的类(class)函数(function)常量(constant)等没有直接的关系。

 

    副作用(side effects)包含但不局限于:产生输出,显式地使用requireinclude,连接外部服务,修改ini配置,触发错误或异常,修改全局或者静态变量,读取或修改文件等等

 

    下面是一个既包含声明又有副作用的示例文件;即应避免的例子:

 

<?php
// 副作用:修改了ini配置
ini_set(‘error_reporting‘, E_ALL);

// 副作用:载入了文件
include "file.php";

// 副作用:产生了输出
echo "<html>
";

// 声明
function foo()
{
    // 函数体
}

 

下面是一个仅包含声明的示例文件;即应提倡的例子:

 

<?php
// 声明
function foo()
{
    // 函数体
}

// 条件式声明不算做是副作用
if (! function_exists(‘bar‘)) {
    function bar()
    {
        // 函数体
    }
}

 

3. 空间名(namespace)类名(class name)

  命名空间(namespace)类(class)必须遵守 PSR-0.

  这意味着一个源文件中只能有一个类(class),并且每个类(class)至少要有一级空间名(namespace):即一个顶级的组织名(vendor name)

  类名(class name) 必须使用StudlyCaps写法。

  PHP5.3之后的代码必须使用正式的命名空间(namespace)
  例子:

<?php
// PHP 5.3 及之后:
namespace VendorModel;

class Foo
{
}

  PHP5.2.x之前的代码建议用伪命名空间Vendor_作为类名(class name)的前缀

 

<?php
// PHP 5.2.x 及之前:
class Vendor_Model_Foo
{
}

 

4. 类的常量、属性和方法

  术语类(class)指所有的类(class)接口(interface)特性(trait)

      

  4.1. 常量

    类常量必须只由大写字母和下划线(_)组成。 
    例子:

 

<?php
namespace VendorModel;

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

 

  4.2. 属性

    本指南中故意不对$StulyCaps$camelCase或者$unser_score中的某一种风格作特别推荐,完全由读者依据个人喜好决定属性名的命名风格。

    但是不管你如何定义属性名,建议在一个合理的范围内保持一致。这个范围可能是组织(vendor)级别的,包(package)级别的,类(class)级别的,或者方法(method)级别的。

  4.3. 方法

    方法名则必须使用camelCase()风格来声明。

 





以上是关于PSR-1 基础编码规范的主要内容,如果未能解决你的问题,请参考以下文章

PHP 基本代码规范 PSR-1

PSR-2 编码风格规范

PHP 编码规范

PHPPHP编码规范

PHP 代码风格规范 PSR-2 (中文版)

PHP PSR-2 代码风格规范 (中文版)