PHP 基本代码规范 PSR-1

PHP 基本代码规范 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>\n";

    //声明
    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 Vendor\Model;

    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 Vendor\Model;

    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() 风格来声明。

原文地址:https://www.cnblogs.com/jack-he/p/9735349.html

时间: 2024-11-10 16:45:08

PHP 基本代码规范 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-1 基本代码规范

这一部分标准包括,哪些应该被认为是标准的编码元素,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词"必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED"). "将会"("SHALL")."不会"("SHALL NOT")."应该"

php开发规范-psr系列规范

转自:http://www.cnblogs.com/x3d/p/php-psr-standards.html PSR 是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard).PSR-1(Basic Coding Standard).PSR-2(Coding Style Guide).PSR-3(Logger Interface).PSR-4(Improved Autoloadin

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.每个命名空间可以有任意多个子命名空间