基本代码规范

本节我们将会讨论一些基本的代码规范问题,以此作为将来讨论更高级别的代码分享和技术互用的基础。

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配置,触发错误或异常,修改全局或者静态变量,读取或修改文件等等

下面是一个既包含声明又有副作用的示例文件;即应避免的例子:

// 副作用:修改了ini配置

ini_set('error_reporting', E_ALL);

// 副作用:载入了文件

include "file.php";

// 副作用:产生了输出

echo "\n";

// 声明

function foo()

{

// 函数体

}

下面是一个仅包含声明的示例文件;即应提倡的例子:

// 声明

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 5.3 及之后:

namespace Vendor\Model;

class Foo

{

}

PHP5.2.x之前的代码建议用伪命名空间Vendor_作为类名(class name)的前缀

// PHP 5.2.x 及之前:

class Vendor_Model_Foo

{

}

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

术语类(class)指所有的类(class),接口(interface)和特性(trait)

4.1. 常量

类常量必须只由大写字母和下划线(_)组成。

例子:

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

php代码规范的书籍,php基本代码规范——PSR-1相关推荐

  1. PHP PSR-1 基本代码规范(中文版)

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

  2. vim php psr,PHP编码规范(PSR-1)-基本代码规范

    PSR-1 基本代码规范 1. 概况 代码文件必须以<?php或 <?= 标签开始 代码文件必须以不带BOM头的 UTF-8 编码 代码文件中应该只定义类(class).函数(functi ...

  3. 让你最快速地改善代码质量的 20 条编程规范

    根据学习部分极客时间 <设计模式之美>专栏 (王争 前Google工程师)和<阿里 java 规范>整理总结. 分别介绍编码规范的三个部分:命名与注释(Naming and C ...

  4. Git代码版本管理命令和团队协作规范---实践版

    Git代码版本管理流程和团队协作规范 Git版本管理介绍 git各分支功能介绍 master 分支 develop 分支 feature 分支 release 分支 hotfix 分支 使用规范 ** ...

  5. 「PSR 规范」PSR-2 编码风格规范

    所有 PSR 规范请见:https://learnku.com/docs/psr https://learnku.com/laravel/t/2079/psr-specification-psr-2- ...

  6. php psr-2,「PSR 规范」PSR-2 编码风格规范

    编码风格指南 本篇规范是 PSR-1 基本代码规范的继承与扩展. 本规范希望通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造成不便. 当多名程序员在多个项目中合 ...

  7. php 结构体_【开发规范】PHP编码开发规范下篇:PSR-2编码风格规范

    之前的一篇文章是对PSR-1的基本介绍 接下来是PSR-2 编码风格规范,它是 PSR-1 基本代码规范的继承与扩展. PSR-1 和PSR-2是PHP开发中基本的编码规范,大家其实都可以参考学习下, ...

  8. java内存规范_Java内存模型-jsr133规范介绍

    最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几 ...

  9. AMD规范(RequireJS)、CMD规范(SeaJS)、CommonJS(BravoJS)规范的辨析

    首先,AMD,CMD,CommonJS都实现了文件模块化. 对于依赖的模块:AMD是提前执行:CMD是延迟执行: AMD是依赖前置,CMD是依赖就近: AMD官方解释:https://github.c ...

最新文章

  1. win10html5无法播放,win10系统中网页中无法播放视频怎么办
  2. 超全的设计模式简介(45种)
  3. 麒麟810处理器_华为nova5跑分公布,麒麟810到底是什么水平?
  4. 微服务技术栈:常见注册中心组件,对比分析
  5. java面试关于ssh的_[Java教程]ssh面试题
  6. js获取地址栏url以及获取url参数
  7. python 一组数据 正态分布散点图_python高维数据型图表矩阵散点图
  8. python如何查询文件路径_Python使用os.listdir和os.walk获取文件路径
  9. 技能大赛 计算机 融合 研究,技能大赛与高职计算机教学的融合研究.doc
  10. android 属性翻牌动画,如何在Android中利用TextSwitcher实现一个文字上下翻牌效果
  11. ECSHOP用户评论
  12. 安装python缺少dll_解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
  13. 大学英语(第一册)复习(原文及全文翻译)——Unit 5 - A Miserable, Merry Christmas(又悲又喜的圣诞节)
  14. oracle10g rac ocssd,求教:安装oracle10g rac 报crs-0223错误问题
  15. 腾讯云web应用防火墙(WAF)防护设置步骤介绍
  16. 用知识图谱打开梁山好汉一百单八将
  17. 漫画分销系统服务器配置,漫画分销系统
  18. flex布局——flex布局
  19. Centos 系统优化
  20. 【SLAM学习】ORB-SLAM2-大体框架(OpenVSLAM)

热门文章

  1. 练习1: Python基本语法元素 (第1周)
  2. 吴恩达机器学习(第一章)——初识机器学习
  3. python:将json数据写入到excel
  4. 校验数字签名防止apkP二次打包
  5. 抄表 软件_云抄表小区智能电表远程抄表软件
  6. 逆向寒假生涯(27/100)
  7. PE学习(五)导出表,编写DLL及查看DLL的导出信息
  8. Mysql 将一张表的数据插入到另一张表中
  9. 126. 最大的和【思维 前缀和】
  10. Java集合TreeMap