PSR-1 基本代码规范

这一部分标准包括,哪些应该被认为是标准的编码元素,以确保共享的PHP代码间具有较高程度的技术互通性。

关键词“必须”(“MUST”)、“一定不可/一定不能”(“MUST NOT”)、“需要”(“REQUIRED”)、

“将会”(“SHALL”)、“不会”(“SHALL NOT”)、“应该”(“SHOULD”)、“不该”(“SHOULD NOT”)、

“推荐”(“RECOMMENDED”)、“可以”(“MAY”)和”可选“(“OPTIONAL”)的详细描述可参见 RFC 2119

1.概览

  • PHP文件必须只使用 <?php<? 这两种标签。
  • PHP文件必须以不带BOM的UTF-8编码。
  • PHP文件中应该只定义类、函数、常量等声明,或其他会产生从属效应 的操作(如:生成文件输出以及修改.ini配置文件等),但是不应该同时做着两件事情。
  • 命名空间以及类必须符合 PSR 的自动加载规范:PSR-0PSR-4 中的一个;
  • 类的命名必须遵循以大写开头的驼峰命名规则(StudlyCaps)。
  • 类中的常量所有字母都必须大写,单词间用下划线分隔。
  • 方法名必须符合以小写开头的驼峰命名法(camelCase)。

2.文件

2.1PHP标签

PHP代码必须使用<?php ?>长标签或<?= ?>短标签输出。一定不能使用其他标签。

2.2字符编码

PHP代码必须只可使用不带BOM的UFT-8编码

2.3从属效应(副作用)

一个文件应该要不就只定义声明(类,函数,常亮等),要不就只有产生从属效应的逻辑操作,但不应该两者都有。

短语“副作用”(side effects)意味着执行的逻辑仅仅从包含文件,而没有直接关系到声明类,函数,常量等。

“从属效应”包含却不仅限于:生成输出、直接的 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
}

下面是一个只包含声明而没有包含side effects的例子,应该被模仿:

<?php
// declaration
function foo()
{
    // function body
}

// conditional declaration is *not* a side effect
if (! function_exists(‘bar‘)) {
    function bar()
    {
        // function body
    }
}

3.命名空间和类

命名空间Namespace和类class必须 遵循”autoloading” PSR标准: [PSR-0, PSR-4].

这就意味着每一个类必须独立为一个属于他自己的文件,且命名空间至少有一个层次:顶级的组织名称(vendor name)。

类的命名必须遵循以大写开头的驼峰命名规则(StudlyCaps)。

PHP5.3及以后的必须用正式的命名空间。

例如:

<?php
// PHP 5.3 and later:
namespace Vendor\Model;

class Foo
{
}

5.2.x及之前的版本应该使用以Vendor_为类名前缀的 伪命名空间的写法

<?php
// PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}

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

此处的“类”指代所有的类、接口以及可复用代码块(traits)

译者注:trait在PHP5.4中泛指所有能被重复使用的函式。 http://php.net/manual/en/language.oop5.traits.php

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())。

时间: 2024-10-06 00:07:34

PSR-1 基本代码规范的相关文章

PHP PSR基本代码规范(中文版)

PSR-1 基本代码规范 本篇规范制定了代码基本元素的相关标准,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED")."将会"("SHALL")."不会"("SHALL NOT")."应

PHP PSR-1 基本代码规范(中文版)

基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”("MUST NOT").“需要”("REQUIRED"). “将会”("SHALL").“不会”("SHALL NOT").“应该”("SHOULD").“不该”("SHOULD NOT"). “推荐”(&

【转载】PHP PSR-1 基本代码规范(中文版)

基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED")."将会"("SHALL")."不会"("SHALL NOT")."应该&quo

PSR : php编码规范

诸王混战 关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的.目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FIG(php框架程序组). 其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,并且Composer推荐使用PSR-4 PHP-FIG 这是一个自愿非正式的机构,但是就目前对我们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了不少非常好

PHP 基本代码规范 PSR-1

PHP 基本代码规范 PSR-1 本节我们将会讨论一些基本的代码规范问题,以此作为将来讨论更高级别的代码分享和技术互用的基础. RFC 2119中的 必须(MUST),不可(MUST NOT),建议(SHOULD),不建议(SHOULD NOT),可以/可能(MAY)等关键词将在本节用来做一些解释性的描述. 1. 概述 源文件 必须 只使用 <?php 和 <?= 这两种标签. 源文件中php代码的编码格式 必须 只使用不带 字节顺序标记(BOM) 的 UTF-8. 一个源文件建议只用来做声明

PSR规范

目前包括以下几个规范: PSR-0(弃用) PSR-1 PSR-2 PSR-3 PSR-4 1.PSR-0 自动加载规范,此规范已被启用-本规范已于2014年10月21日被标记为弃用,目前新的替代规范为[PSR-4] 本文是为自动加载器实现通用自动加载所需要遵循的编码规范 一个标准的命名空间与类名称的定义必须符合以下结构:\<Vendor Name><Namespace>*(ClassName) 其中Vendor Name 为每个命名空间都必须要有的一个顶级命名空间名 需要的话,每

psr的规范

基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED"). "将会"("SHALL")."不会"("SHALL NOT")."应该&qu

FIG-PHP PSR规范系列1-基础编码规范

1. FIG-PHP与PSR简介 FIG-PHP制定了一系列PHP开发规范,简称PSR,这里FIG是框架互操作工作组(Framework Interoperability Group)的简称,PSR是PHP标准推荐(PHP Standard Recommendation)的缩写.FIG-PHP工作组最初是源于项目代表讨论两个项目之间的共性时,找出可以共事的方式.主要的受众是双方项目组,但PHP界的其他人也在观望.如果其他人愿意采用这里的规范,那么欢迎,但这并非工作组的目标.工作组中没人会告诉你如

psr规范发展历程

====================PSR-0(自动加载规范)======================= PSR-0(Autoloading Standard)类自动加载规范,该规范现已废弃(Deprecated),它将由PSR-4替代. 1.一个完全合格的命名空间和类名必须遵循以下结构 "\VendorName\Namespace\ClassName" 2.每个命名空间必须有顶级的命名空间 "VendorName" 3.每个命名空间可以有任意多个子命名空间