基本代码规范

本节我们将会讨论一些基本的代码规范问题,以此作为将来讨论更高级别的代码分享和技术互用的基础。
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. 常量

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

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

转载自:https://github.com/hfcorriez/fig-standards/blob/zh_CN/%E6%8E%A5%E5%8F%97/PSR-1-basic-coding-standard.md

PHP规范学习——PRS-1相关推荐

  1. 追求卓越追求完美规范学习_追求新的黄金比例

    追求卓越追求完美规范学习 The golden ratio is originally a mathematical term. But art, architecture, and design a ...

  2. 1083_MISRA_C规范学习_2004_Rule_5.3

    MISRA_C规范学习_2004_Rule_5.3 Grey 全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happ ...

  3. 979_MISRA C规范学习笔记3

    MISRA C规范学习笔记3 Grey 全部学习汇总: https://github.com/GreyZhang/misra_c_hacking MISRA C规范学习笔记3 文档学习 实际的实施中, ...

  4. 阿里巴巴代码规范学习+redis stream

    阿里巴巴代码规范学习 1.volatile volatile是一个特征修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直 ...

  5. 蓝牙篇之蓝牙核心规范学习笔记(V5.3)汇总

    蓝牙核心规范5.3版,一共3085页,博主以思维导图的方式,记录博主学习蓝牙规范,想要一起学习的小伙伴,可以一起学习. 特别声明:想要啃3000多页英文规范,可以直接忽略本专栏. 关注左侧公众号,回复 ...

  6. 阿里java开发规范学习笔记 (V1.5华山版)

    学习总结 本次开发编码规范手册的变更,相比上一版本存在较多的变化. 主要集中在,对于其中的原理有了更深层次的追踪和了解: 1. 集合元素章节对于集合元素的处理上容易出现问题的地方. 2. 新增敏捷模式 ...

  7. 1211_MISRA_C规范学习笔记_表达式的要求

    全部学习汇总: https://github.com/GreyZhang/misra_c_hacking 12.1, 规则12.1(咨询):在表达式中,应该对C语言的运算符优先级规则有一定的限制. 关 ...

  8. 阿里巴巴编码规范学习及应用

    点击 Mr.绵羊的知识星球 解锁更多优质文章. 目录 一.介绍 二.学习及应用 三.总结 一.介绍 无规矩不成方圆,无规范不能协作.近万名阿里Java技术精英的经验总结,并经历了多次大规模一线实战检验 ...

  9. 【阿里巴巴Java编程规范学习 一】Java基本编程规约(上)

    编程规约是比较重要的部分,按照基础和高级,我分成了两篇来学习,上篇涉及到命名风格.常量定义.代码格式和OOP规约都是面向对象基础部分和一些通识命名规范.红色加粗字体为自己可能会犯的错误以及不规范的地方 ...

  10. 阿里巴巴java开发规范学习

    目录 一.编程规约 1.1 命名风格 1.2 常量定义 1.3 代码格式 ​1.4 OOP规约 1.5 集合处理 二.异常 三.MYSQL数据库 3.1 建表规约 3.2 索引规约 3.3 SQL语句 ...

最新文章

  1. 基础总结篇之一:Activity生命周期
  2. squidguard实现
  3. 如果需要,npm检查并更新包
  4. mysql中查询出现的错误_在MySQL查询中查询语法错误
  5. 文件I0通用的IO模型
  6. ucos实时操作系统应用开发流程
  7. Python+OpenGL使用Cohen-Sutherland算法实现直线裁剪
  8. Wings-让单元测试智能全自动生成
  9. 股市舆情情感分类可视化系统
  10. Palabos源码:computeEquilibrium(iPop, rhoBar, j, jSqr)的过程
  11. GOF设计模式(概念、原则、场景、优点、缺点、应用)
  12. java pdf合并_利用iText 合并PDF与分解PDF的例子
  13. Scratch 游戏项目学习法 —— 接苹果(六)让苹果掉到下面
  14. 【Win10系统右下角网络图标消失、无法联网、网络Internet状态闪退等问题解决方法】
  15. 12C ORA-错误汇总20
  16. 【Spring Cloud】新闻头条微服务项目:自媒体前后端搭建素材管理(含优化)
  17. 阿里健康四面,阿里飞猪技术两面经历分享,已进阿里飞猪
  18. html5手电筒样式,利用HTML5实现SVG模拟手电筒照明特效
  19. Java项目:设备台账管理系统(java+SSM+HTML+JSP+JS+mysql)
  20. 当所有人都站着吆喝,我选择退一步坐下

热门文章

  1. 2015,我的转折点
  2. 打包后自定义attr找不到_本硕985裸辞后找不到工作,该何去何从?
  3. kafka系列--简介_李孟_新浪博客
  4. 57602-02-5,Bromo-PEG4-bromide,Br-PEG4-br,溴基-四聚乙二醇-溴基的物理特性
  5. 感应数显测电笔的使用方法
  6. 声学所ZJ系列压电测试仪之多层压电陶瓷变压器的振动与疲劳
  7. LED 色温控制芯片MST1028
  8. 3_5 生成元(UVa1583)
  9. 计算机技术与生物学的关系,生物信息学复习整理
  10. 异地多活数据同步平台