资讯专栏INFORMATION COLUMN

php开发规范

wuyangchun / 1820人阅读

摘要:开发规范整理代码样式规范编码基本规范代码必须遵守。申明相关规范命名空间申明和使用在声明下面必须有一个空行,并且声明代码块下面也必须有一个空行空格空格类的申明类的左花括号必须放到下一行,右花括号必须放在类主体的下一行。

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、方法中有默认值的参数必须放在参数列表的最后面。
class DbMysql
{
public function getUser($arg1, &$arg2, $arg3 = [])
{
.....代码
}
}
b、abstract和final声明必须在可见性之前;
class DbMysql
{
final public function getUser()
{
.....代码
}
}
c、static声明必须在可见性之后
静态 static 方法应该声明其作用域,且不应该再被声明为 private 私有,而应该为 protected 或者public
如果只是不想被子类继承,则应该用 final 声明它们
class DbMysql
{
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. 所有字母都使用小写
b. 对于一个变量使用多个单词的,使用’_"作为每个词的间隔
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";
break;
}
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) {
// catch body
}
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) {
// body
};
参数和变量列表可以被分成多个带一次缩进的后续行。如果这么做,列表的第一项必须放在下一行,并且一行必须只放一个参数或变量。
当最终列表(不管是参数还是变量)被分成多行,右括号和左花括号必须夹带一个空格放在一起自成一行。
下面是一个参数和变量列表被分割成多行的示例。
$longArgs_noVars = function (
$longArgument,
$longerArgument,
$muchLongerArgument
) {
// body
};
$noArgs_longVars = function () use (
$longVar1,
$longerVar2,
$muchLongerVar3
) {
// body
};
$longArgs_longVars = function (
$longArgument,
$longerArgument,
$muchLongerArgument
) use (
$longVar1,
$longerVar2,
$muchLongerVar3
) {
// body
};
$longArgs_shortVars = function (
$longArgument,
$longerArgument,
$muchLongerArgument
) use ($var1) {
// body
};
$shortArgs_longVars = function ($arg) use (
$longVar1,
$longerVar2,
$muchLongerVar3
) {
// body
};
注意如果在函数或者方法中把闭包作为一个参数调用,如上格式规则同样适用。
$foo->bar(
$arg1,
function ($arg2) use ($var1) {
// body
},
$arg3
);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21841.html

相关文章

  • 在github规范开发以及持续构建php项目

    摘要:本文目的是通过自己写的一个的简单的库花密密码生成工具,来学习我认为的库开发的一些规范,以及上持续构建你的项目的一些方法。给自己的项目开启持续构建。包发布以及当你的代码完成后,测试完成后。 本文目的是通过自己写的一个php的简单的库(花密密码生成工具), 来学习我认为的php库开发的一些规范,以及github上持续构建你的项目的一些方法。其实是为了显示下边一系列的的徽章 showImg(...

    Sleepy 评论0 收藏0
  • PHP 规范说明与工具

    摘要:今天这篇分享将简单地梳理一下规范,并介绍一个代码检查工具,结合以及进行实践。目前流行的一些规范是的简写,由组织制定的规范,是开发的实践标准。目前已表决通过了套标准,已经得到大部分框架的支持和认可。 > 作为一个新手,写出规范的代码也是一门必修课,除了阅读相应的代码规范文档之外,充分利用相关的工具能使得进阶之路事半功倍。今天这篇分享将简单地梳理一下 PHP 规范,并介绍一个代码检查工具 ...

    snowLu 评论0 收藏0
  • PHP开发编码规范

    摘要:本规范只针对开发过程中编码的规范,对于开发项目中文件目录数据库等方面的规范,将不重点涉及。本规范包含了开发时程序编码中命名规范代码缩进规则控制结构函数调用函数定义注释包含代码标记文件头的注释块标记样例常量命名等方面的规则。 第一章 编码规范 为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范。开发团队根据自己的实际情...

    kycool 评论0 收藏0
  • PHP 标准规范

    摘要:标准规范简介是的简写,由组织制定的规范,是开发的实践标准。具体标准有有了统一编码风格规范,更有利于查看和学习各个框架或类库,不不需要每次都适应新的编码风格。同时在开发团队内部使用统一的编码规范更有利于代码审查版本控制团队内部交流。 PHP 标准规范 PSR PSR 简介 PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP...

    FuisonDesign 评论0 收藏0
  • PHP-PSR 现代PHPer的开发规范

    摘要:的使命是实现框架之间的互操作性。个人和官方都认为开发者应该遵循更为严格的代码标准,在现代的生态系统中,风格统一,可以更好的让其他开发者理解代码。记录的消息用于诊断检查和排除应用中的操作稳定性和性能方面的问题。 原文是在我自己博客中,小伙伴也可以点阅读原文进行跳转查看,还有好听的背景音乐噢~     PSR是PHP Standards Recommendation的简称,意为PHP推荐标...

    zebrayoung 评论0 收藏0
  • PHP编码规范

    摘要:为什么需要编码规范为了提高工作效率,保证开发的有效性和合理性。在文件编码中,选择推荐在换行符中,选择推荐文件命名程序的文件名和目录名都采用有意义的英文命名。最后最后说的是,本规范不是强制,也不是标准。回复编码规范即可。 为什么需要编码规范? 为了提高工作效率,保证开发的有效性和合理性。 为了提高代码可读性和可重复利用性,从而节约沟通成本。 本文主要参考了 PEAR 规范,并进行适当...

    xuweijian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<