psr的规范
基本代码规范
本篇规范制定了代码基本元素的相关标准, 以确保共享的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配置文件等),二者只能选其一;类的命名必须遵循
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-0.
根据规范,每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(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()
式的小写开头驼峰命名规范。
psr的规范的更多相关文章
- PHP PSR 代码规范基本介绍
PSR 是 PHP Standard Recommendation 的简写,即PHP推荐标准. 目前通过的规范有 PSR-0(Autoloading Standard).PSR-1(Basic Cod ...
- PHP PSR标准规范
PHP PSR标准规范,PHP开发者都需要遵循规范. 官网(英文版本): https://www.php-fig.org 官网(中文版本): https://psr.phphub.org
- PSR标准规范
PSR标准规范 基本代码规范 PHP代码文件 必须 以 不带 BOM 的 UTF-8 编码: 类的命名 必须 遵循 StudlyCaps 大写开头的驼峰命名规范: 类中的常量所有字母都 必须 大写,单 ...
- PHP的PSR系列规范都有啥内容
PSR 是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard).PSR-1(Bas ...
- PHP PSR代码规范
转载: https://www.awaimai.com/916.html PSR是PHP通用性框架小组 (PHP Framework Interop Group) 制定的PHP代码编写格式规范,是PH ...
- PHP PSR基本代码规范(中文版)
PSR-1 基本代码规范 本篇规范制定了代码基本元素的相关标准,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”(&qu ...
- php开发规范-psr系列规范
转自:http://www.cnblogs.com/x3d/p/php-psr-standards.html PSR 是PHP Standard Recommendation的简写,它其实应该叫PSR ...
- PSR编码规范
PSR-1 代码风格规范(1)常量命名:类中的常量所有字母都必须大写,单词间用下划线分隔(2)类命名:类的命名必须遵循 StudlyCaps 大写开头的驼峰命名规范(3)方法命名:方法名称必须符合 c ...
- PHP,PSR开发规范
https://github.com/hfcorriez/fig-standards/tree/zh_CN/%E6%8E%A5%E5%8F%97 PSR-1-basic-coding-standard ...
随机推荐
- inline--行内元素
其实在网页中有看不见的基线,就像作业本上面的一行一行的线,但是我们看不见. div是块状元素,独占一行,用div控制文字的颜色会使得文字换行,使用float可以改善,但是它不会浮在相应的位置: < ...
- [原创]在Framelayout中放置button控件出现的覆盖问题
android Framelayout(帧布局)是很常用的布局,主要用来处理需要多个view叠加显示的情况. 然而在使用中,我发现Framelayout中的Button控件,会挡住所有其他控件,而不论 ...
- Linux CentOS 中安装 MySql
CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com ...
- IntelliMVCCode智能MVC架构的代码助手使用方法
智能代码生成工具,快速帮助开发者提升开发速度,通过工具自动生成MVC架构的大量源代码,节省更多的开发时间. 工具使用的框架:.net4.0,通过工具连接到数据库自动提取数据表或视图中的结构,生成对应的 ...
- Jenkins
http://www.cnblogs.com/chowmin/category/598634.html
- Android 自定义view(二) —— attr 使用
前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...
- hdu 1556
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- C++之路进阶codevs1242(布局)
1242 布局 2005年USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold <:section class="hbox" ...
- Google Code Jam Round 1A 2015 解题报告
题目链接:https://code.google.com/codejam/contest/4224486/ Problem A. Mushroom Monster 这题题意就是,有N个时间点,每个时间 ...
- FTF登入tiny210开发板
配置环境一: 第一步:安装虚拟机 1)安装虚拟机+Linux12.04 2)安装FTP软件 第二步:配置超级终端(串口) 1)开 ...