当前位置:首页>编程日记>正文

php原生开发规范,php开发规范

PHP 开发规范整理

代码样式规范

编码基本规范

a、代码必须遵守 PSR-1。

b、文件编码Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM)

c、代码必须使用4个空格的缩进,而不是制表符。

d、一行代码长度不应硬性限制;软限制必须为120个字符;也应当是80个字符或者更少。

2、申明相关规范

2.1 命名空间申明和使用

a、 ##在namespace声明下面必须有一个空行,并且use声明代码块下面也必须有一个空行

namespace frontendcontrollers;

.....空格

use Yii;

2.2 类的申明

a、类的左花括号必须放到下一行,右花括号必须放在类主体的下一行。

b、方法的左花括号必须放在下一行,右花括号必须放在方法主体下面。

c、术语“类”指所有的类,接口( interface ) 抽象类( abstract ) 和 特性( traits )

class DbMysql

{

.....代码

}

interface DbMysql

abstract DbMysql

traits DbMysql

2.3 类的扩展和继承

a、一个类的extends和implements关键词必须和类名在同一行。

b、类的左花括号必须放在下面自成一行;右花括号必须放在类主体的后面自成一行。

class ClassName extends ParentClass implements ArrayAccess, Countable

c、implements一个列表可以被拆分为多个有一次缩进的后续行。如果这么做,列表的第一项必须要放在下一行,并且每行必须只有一个接口。

class ClassName extends ParentClass implements

ArrayAccess,

Countable,

Serializable

2.4 方法申明

a、所有的属性和方法必须有可见性(译者注:Public, Protect, Private)声明

b、在参数列表中,逗号之前不可有空格,逗号之后必须要有一个空格。

c、方法中有默认值的参数必须放在参数列表的最后面。

public function getUser($arg1, &$arg2, $arg3 = [])

b、abstract和final声明必须在可见性之前;

final public function getUser()

c、static声明必须在可见性之后

静态 static 方法应该声明其作用域,且不应该再被声明为 private 私有,而应该为 protected 或者public

如果只是不想被子类继承,则应该用 final 声明它们

public static function getUser()

3、命名规范

3.1 普通变量

a. 所有字母都使用小写;

b. 对于一个变量使用多个单词的,使用’_'作为每个词的间隔

例如:$base_dir、$red_rose_price等

3.2 局部变量

a. 所有字母使用小写;

b. 变量使用’'开头;

c. 多个单词组成的局部变量名使用’'作为每个词间的间隔

例子:$_base_dir、$_red_rose_price等。

3.3 全局变量

全局变量应该带前缀’g',知道一个变量的作用域是非常重要的

例如

global $g_log_level;

global $g_log_path;

3.4 全局常量

a. 所有字母使用大写

b. 全局变量多个单词间使用’_'作为间隔

例子:$BASE_DIR、$RED_ROSE_PRICE等

3.5 函数

a. 所有字母都使用小写

c. 函数的命名建议使用动词+名词的方式,如get_user_img。

完成一组功能的函数放到一个文件中,存放函数的文件采用function_name.func.php命名

3.6 类

a. 以大写字母开头;

b. 多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。

例子:class MyClass 或class DbOracle等。

3.7 方法

a. 首字母小写;

b. 多个单词间不使用间隔,除第一个单词外,其他单词首字母大写

例子:function myFunction ()或function myDbOracle ()等

4、控制结构申明

4.1. if,elseif,else

a、一个if结构看起来应该像下面这样。注意括号,空格,花括号的位置;

b、并且else和elseif和前一个主体的右花括号在同一行。

if ($expr1) {

// if body

} elseif ($expr2) {

// elseif body

} else {

// else body;

关键词elseif应该替代else if使用以保持所有的控制关键词像一个单词。

4.2. switch,case

a、一个switch结构看起来应该像下面这样。注意括号,空格和花括号。

b、case语句必须从switch处缩进,并且break关键字(或其他中止关键字)必须和case主体缩进在同级。

c、如果一个非空的case主体往下落空则必须有一个类似// no break的注释。

switch ($expr) {

case 0:

echo 'First case, with a break';

break;

case 1:

echo 'Second case, which falls through';

// no break

case 2:

case 3:

case 4:

echo 'Third case, return instead of break';

return;

default:

echo 'Default case';

4.3. while,do while

a、一个while语句看起来应该像下面这样。注意括号,空格和花括号的位置。

while ($expr) {

// structure body

b、同样的,一个do while语句看起来应该像下面这样。注意括号,空格和花括号的位置。

do {

// structure body;

} while ($expr);

4.4. for

a、一个for语句看起来应该像下面这样。注意括号,空格和花括号的位置。

for ($i = 0; $i < 10; $i++) {

// for body

4.5. foreach

a、一个foreach语句看起来应该像下面这样。注意括号,空格和花括号的位置。

foreach ($iterable as $key => $value) {

// foreach body

4.6. try, catch

a、一个try catch语句看起来应该像下面这样。注意括号,空格和花括号的位置。

try {

// try body

} catch (FirstExceptionType $e) {

// catch body

} catch (OtherExceptionType $e) {

5、编码习惯

5.1、变量使用

a.所有的变量均需要先申明后使用

b.对于数组或对象,在使用一个不确定的key时,首先进行isset()的判断,然后再使用

例子:$var = ''; isset($val) ? $val : '';

5.2、变量的输入输出

a.不推荐直接使用$_GET、$_POST或者$_REQUEST获取值

b.所有的输入输出都必须使用框架封装的方法来实现

5.3、字符串相关

a.字符串尽量使用单引号

b.如果字符串中需要使用变量,例如:$val = "tips:{$title}";

6. 闭包( 参考 )

闭包在声明时function关键词之后必须有一个空格,并且use之前也需要一个空格。

左花括号必须在同一行,右花括号必须在主体的下一行。

参数列表和变量列表的左括号之后不可有空格,其右括号之前也不可有空格。

在参数列表和变量列表中,逗号之前不可有空格,逗号之后必须有空格。

闭包带默认值的参数必须放在参数列表后面。

一个闭包声明看起来应该像下面这样。注意括号,空格和花括号的位置。

$closureWithArgs = function ($arg1, $arg2) {

// body

};

$closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {

参数和变量列表可以被分成多个带一次缩进的后续行。如果这么做,列表的第一项必须放在下一行,并且一行必须只放一个参数或变量。

当最终列表(不管是参数还是变量)被分成多行,右括号和左花括号必须夹带一个空格放在一起自成一行。

下面是一个参数和变量列表被分割成多行的示例。

$longArgs_noVars = function (

$longArgument,

$longerArgument,

$muchLongerArgument

) {

$noArgs_longVars = function () use (

$longVar1,

$longerVar2,

$muchLongerVar3

$longArgs_longVars = function (

) use (

$longArgs_shortVars = function (

) use ($var1) {

$shortArgs_longVars = function ($arg) use (

注意如果在函数或者方法中把闭包作为一个参数调用,如上格式规则同样适用。

$foo->bar(

$arg1,

function ($arg2) use ($var1) {

},

$arg3

);


http://www.coolblog.cn/news/d1aae57b5992a080.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐