PSR-1 基本代码规范
来源:互联网 发布:国内旅游消费总额数据 编辑:程序博客网 时间:2024/05/18 00:26
本节我们将会讨论一些基本的代码规范问题,以此作为将来讨论更高级别的代码分享和技术互用的基础。
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)
包含但不局限于:产生输出,显式地使用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. 空间名(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. 常量
类常量必须
只由大写字母和下划线(_)
组成。 例子:
<?phpnamespace 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()
风格来声明。
- PSR-1 基本代码规范
- PSR-1 基本代码规范
- PHP PSR-1 基本代码规范(中文版)
- PHP PSR-1 基本代码规范
- 1. PSR-1 --- 基本代码规范
- PHP PSR-1 基本代码规范(中文版)
- PHP PSR-1 基本代码规范(中文版)
- PHP PSR-1 基本代码规范(中文版)
- PHP PSR-1 基本代码规范
- PSR-2 基本代码规范
- PSR-1 基本代码规范和规范提示
- PSR-1 基本编码规范
- PHP PSR-2 基本代码规范(中文版)
- PHP PSR-3 基本代码规范(中文版)
- PHP PSR-4 基本代码规范(中文版)
- php几点PSR基本代码规范
- PSR代码规范
- [PSR规范]PSR-1基础编码规范
- Java线程(九):Condition-线程通信更高效的方式
- caffe accuracy 学习
- 奋斗吧,程序员——第四章 人生若只如初见,何事秋风悲画扇
- Wiggle Sort
- Linux——作业1
- PSR-1 基本代码规范
- Mybatis整合Spring(这篇写的很清楚所以转载了)
- C语言函数校对 符号函数sgn()
- Service详解
- Maven之Spring_boot创建表结构
- python 中time模块各种日期格式相互转化实例
- math pieces
- linux常用指令
- 书评1:学会学习-寻找适合自己的学习方法