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-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
// 声明函数
function foo()
{
    // 函数主体部分
}

// 条件声明**不**属于从属效应
if (! function_exists('bar')) {
    function bar()
    {
        // 函数主体部分
    }
}

3. 命名空间和类

命名空间以及类的命名必须遵循 PSR-4

根据规范,每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(vendor name)。

类的命名必须 遵循 StudlyCaps 大写开头的驼峰命名规范。

PHP 5.3及以后版本的代码必须使用正式的命名空间。

例如:

<?php
// PHP 5.3及以后版本的写法
namespace Vendor\Model;

class Foo
{
}

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

<?php
// 5.2.x及之前版本的写法
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() 式的小写开头驼峰命名规范。

时间: 2024-10-31 15:20:40

PSR-1的相关文章

PHP的PSR规范中文版

FIG组织在制定跟PHP相关规范,简称PSR.目前已有4个代码规范,近期抽空翻译成了中文版.建议做PHP的同学都关注一下. 文档仓库地址:https://github.com/hfcorriez/fig-standards 所有已接受的规范参考:https://github.com/hfcorriez/fig-standards/tree/zh_CN/%E6%8E%A5%E5%8F%97 代码样式规范 本指南的意图是为了减少不同开发者在浏览代码时减少认知的差异. 为此列举一组如何格式化PHP代码

Windows 7 PSR如何通过程序调用并自动开始记录

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace PSR { class Program { static void Main(string[] args) { Process MyProcess1 = Process.Start(@"C:\Windows\System32\psr.exe");

怎么获取psr文件中蓝牙地址,并对地址一次增加?

问题描述 怎么获取psr文件中蓝牙地址,并对地址一次增加? 例如IIS_GUM_V4.1.psr文件,要获取// PSKEY_BDADDR &0001 = 0000 0011 0008 12fc,之后要对蓝牙地址进行修改,实现依次增加. 解决方案 在 winCE 蓝牙开发中,蓝牙地址是存储在 PSKEY 中的,例如: //PSKEY start // PSKEY_BDADDR &0001 = 0000 a5a5 005b 0002 //蓝牙地址,这个就是你要找的 // PSKEY_HOST

Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍

原文:http://blog.csdn.net/tianlesoftware/article/details/5809526 一. CPU(Critical Patch Update)     一个CPU内包含了对多个安全漏洞的修复,并且也包括相应必需的非安全漏洞的补丁.CPU是累积型的,只要安装最新发布的CPU即可,其中包括之前发布的所有CPU的内容.事实上,在CPU之前的安全漏洞修改除去个别例外也被包括在CPU中.Oracle公司只对处于标准技术支持和延长支持期间的产品提供CPU更新,对处于

PHP符合PSR编程规范的实例分享_php技巧

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

PHP的PSR规范中文版_php基础

文档仓库地址:https://github.com/hfcorriez/fig-standards PSR规范中文版 PSR-0自动加载 PSR-1基本代码规范 PSR-2代码样式 PSR-3日志接口 为何规范 摘录翻译了官方的一句话 本组织旨在通过讨论我们代码项目的共同点以找出一个协作编程的方法. 在此想到了一篇文章<Google为何要执行严格的代码规范>中有这么一段话: 复制代码 代码如下: 在谷歌,我可以查看任何的代码,进入所有谷歌的代码库,我有权查看它们.事实上,这种权限是很少人能拥有

Windows7 PSR通过程序调用并自动开始记录

点击打开链接

转 Win8系统108个运行命令 你能记住多少?

Win8运行命令:程序和功能        取消了开始菜单的Win8让人感觉很不习惯,这才发现原来开始菜单可以做这么多事.不过Win8中的一些快捷键还沿用了Windows一直以来的习惯,比如按下Windows + R打开"运行"对话框.在这里我们可以通过命令来打开各种应用程序或系统设置,不过这需要你有超强的记忆力,能把Win8中所有的运行命令都记住.       以下这108条运行命令都是大家经常会用到的,看看你能记住多少? Win8系统108个运行命令 你能记住多少? 1.appwi

PHP编码规范-php coding standard

standard|编码|规范 目录 介绍 标准化的重要性 解释 认同观点 项目的四个阶段 命名规则 合适的命名 缩写词不要全部使用大写字母 类命名 类库命名 方法命名 类属性命名 方法中参数命名 变量命名 引用变量和函数返回引用 全局变量 定义命名 / 全局常量 静态变量 函数命名 php文件扩展名 文档规则 评价注释 Comments Should Tell a Story Document Decisions 使用标头说明 Make Gotchas Explicit Interface an

现在写 PHP,你应该知道这些

首先你应该是在用 PHP 5.3 以上的版本,如果 PHP 版本在这之下,是时候该升级了.我建议如果有条件,最好使用最新的版本. 你应该看过 PHP The Right Way,这篇文章包含了很多内容,而且还能再扩展开.大部分的名词和概念你都需要了解. 1. PSR The idea behind the group is for project representatives to talk about the commonalities between our projects and fi