文档章节

PHP编码规范(PSR-1)-基本代码规范

2688
 2688
发布于 2016/07/04 12:00
字数 925
阅读 72
收藏 0

PSR-1 基本代码规范

1. 概况

  • 代码文件必须以<?php<?= 标签开始
  • 代码文件必须以不带BOM头的 UTF-8 编码
  • 代码文件中应该只定义类(class)、函数(function)、常量(constants)等声明,或其他会产生从属效应 的操作(如:生成文件输出以及修改.ini配置文件等),二者只能选其一,也就是说功能唯一;
  • 命名空间以及类必须符合 PSR 的自动加载规范:PSR-4;
  • 类的命名必须遵循StudlyCaps大写开头的驼峰命名规范;
  • 类中的常量所有字母都必须大写,单词间用下划线分隔;
  • 方法名称必须符合camelCase式的小写开头驼峰命名规范;

2. 文件

2.1 PHP 标签

PHP代码必须使用 <?php ?> 长标签 或 <?= ?> 短输出标签;一定不可使用其它自定义标签。

2.2 字符编码

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

2.3 从属效应(副作用)

一份PHP文件中应该要不就只定义新的声明,如类、函数或常量等不产生从属效应的操作,要不就只有会产生从属效应的逻辑操作,但不该同时具有两者。 "从属效应"(side effects)一词的意思是,仅仅通过包含文件,不直接声明类,函数和常量等,而执行的逻辑操作。 "从属效应"包含却不仅限于:生成输出,直接的 require 或 include,连接外部服务,修改 ini 配置、抛出错误或异常、修改全局或静态变量、读或写文件等。 以下是一个错误的例子,一份包含声明以及产生从属效应的代码:

<?php
// 从属效应:修改 ini 配置
ini_set('error_reporting', E_ALL);
// 从属效应:引入文件
include "file.php";
// 从属效应:生成输出
echo "<html>\n";
// 声明函数
function foo()
{
    // 函数主体部分
}

下面是一个范例,一份只包含声明不产生从属效应的代码:

<?php
// declaration
function foo()
{
    // function body
}
// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
    function bar()
    {
        // function body
    }
}

3. 命名空间和类

命名空间以及类的命名必须遵循 PSR-4。 根据规范,每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(vendor name)。 类的命名必须 遵循 StudlyCaps 大写开头的驼峰命名规范。 PHP 5.3及以后版本的代码必须使用正式的命名空间。 例如:

<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}

5.2.x及之前的版本应该使用伪命名空间的写法,约定俗成使用顶级的组织名称(vendor name)如 Vendor_ 为类前缀。

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

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

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

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() 式的小写开头驼峰命名规范。

参考文档

© 著作权归作者所有

共有 人打赏支持
2688

2688

粉丝 11
博文 56
码字总数 33491
作品 0
深圳
高级程序员
私信 提问
PHP编码规范(PSR)的简述

PSR简介 PSR是一系列关于PHP开发的规范,一般大家遵守的是 php-fig定义的规范,中文翻译版本参考目前官方已制定的规范包括以下六份文件: PSR-0 (弃用) PSR-1 (基本代码规范) PSR-2 (代码风格...

2688
2016/07/04
335
0
FIG-PHP PSR规范系列1-基础编码规范

FIG-PHP与PSR简介 FIG-PHP制定了一系列PHP开发规范,简称PSR,这里FIG是框架互操作工作组(Framework Interoperability Group)的简称,PSR是PHP标准推荐(PHP Standard Recommendation)的缩...

一配
2015/07/29
0
0
【PHP】PSR简要规范

【PHP】PSR简要规范 代码规范 php 一鸣 PSR是一系列关于PHP开发的规范,分有好几个版本,自己学的也较为肤浅,但还是希望能时常查看规范,为了方便记忆和遵循,我把关键词为必须的捡拾出来,...

Yomut
2016/05/30
61
0
PHP代码规范检测 - SVN服务端配置

代码质量的检测插件有很多,这里只拿最基本的PSR做介绍。 长期以来,我们一直再做自己的代码规范,对新入职的员工进行培训。然而,效果却不是特别好。 代码规范不能顺利执行的主要原因有以下...

Dorm_Script
2016/11/15
0
0
PHP PSR-1 基本代码规范(中文版)

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

china008
2015/12/31
42
1

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
36分钟前
0
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部