PHP编码规范

简介: 良好的PHP编码规范能让你的代码看起来更加的优雅,清晰的结构有助于提高可读性并减少工作量。

良好的PHP编码规范能让你的代码看起来更加的优雅,清晰的结构有助于提高可读性并减少工作量。

一:编码格式

文件应该使用 Unicode (UTF-8) 编码保存,不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的头信息。

如果保存带BOM的编码,会在文件头输出类似ufeff的内容。这样是不好的,会导致JSON等数据无法正常读取。

二:PHP闭合标签

纯PHP文件,不要写 ‘?>’ 闭合标签。保持最后一行留空即可。

PHP的闭合标签可能会在一些框架中造成编码问题。

这个一定要注意,否则出了问题可能没有办法锁定问题的来源。

例如:

<?php
    phpinfo();

三:代码缩进

使用Tab键来缩进,每个Tab键长度设置为4个空格;

四:代码换行

为了保证代码的可读性。请注意代码换行。

例:

$dataList = DB::select("
SELECT p1.id,p1.personal_id,p2.name ,p2.id AS userid
          FROM student_group_detail p1
         LEFT JOIN user p2 ON p1.userid=p2.id
         WHERE p1.grpid = '{$grpid}'
         ORDER BY p1.userid,p1.personal_id ASC");

五:命名规则

1:类命名规则:使用大驼峰式(StudlyCaps)写法;

2:方法命名规则:(类的)方法名 使用小驼峰(cameCase)写法;

3:函数命名规则:函数名使用 小写字母 + 下划线 写法,如 function http_send_post();

4:变量命名规则:变量名 使用小驼峰写法,如 $userName;

六:代码注释

良好的代码注释,方便其他同事更快捷的阅读你的代码。

1:类注释:要标记好创建人,类的功能,及创建时间。

/**
 * @name 微信小游戏数据统计类
 * @author camellia
 * @date 20200703
 */
class ReckonController extends AppHttpControllerscommonCommonController
{
}

2:方法注释:要标记好方法功能,创建人,创建时间,参数含义,及返回值

/**
     * @name 获取微信小游戏统计页列表
     * @author camellia
     * @date 20200703
     * @param id 用户群组ID student_group_detail表外键
     * @return json
     */
    public function getWxGameReckonList()
{
}

3:单行注释

// 定义一个空数组,用来存储返回值
        $group = array();
        // 计算数组长度
        $dataNum = count($dataList);

4:多行注释,这里有一个小技巧。

/*if (!isset($_REQUEST['id'])) //1-2-45 分割样式
        {
            $result['code'] = -1;
            $result['msg'] = '系统故障-参数携带不全';
            return $result;
        }
        $grpid = strim($_REQUEST['id']);//*/

注意看我结束位置的注释写法,这样写的好处是,解除注释的时候,你只需要将开头的/*删除就可以了。后边的可以不用理会。

 
5:一个项目多人协作开发,不可避免的会出现组员之前互相交叉改代码的一个情况,修改别人的代码的时候,注释的格式:

标注添加时间,并标注为何添加。

// ========================================================
// add by camellia 20200703 微信小游戏统计
// 获取微信小游戏统计列表
Route::get("/getWxGameReckonList", 'WxGameReckonController@getWxGameReckonList');
// 获取微信小游戏用户关卡详情
Route::get("/getUserLevelDetail", 'WxGameReckonController@getUserLevelDetail');

七:控制结构

这里的控制结构主要指if-elseif-else 与 switch-case

(1):if-elseif-else

<?php
if ($expr1) { // if 与 ( 之间有一个空格,) 与 { 之间有一个空格
 
} elseif ($expr2) { // elesif 连着写,与 ( 之间有一个空格,) 与 { 之间有一个空格
 
} else { // else 左右各一个空格
 
}

(2):switch-case

<?php
switch ($expr) { // switch 与 ( 之间有一个空格,) 与 { 之间有一个空格
    case 0:
        echo 'First case, with a break'; // 对齐
        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;
}

在 "switch" 语句中应该总是包括 "default" 控制。

八:变量声明及使用

1:普通变量:声明此类变量的时候,用描述性的变量的命名,采用小驼峰式写法。像 $i 或 $n 等等都是不建议使用的。

2:全局变量:声明此类变量的时候,需要给其附默认值。

3:静态变量:其是存储在服务器的运行内存中,因此不宜声明过多,容易造成内存崩溃。

4:常量:命名有意义,采用大写字母加下划线的形势命名。

九:业务模块

1:涉及到多个数据表 更新/添加 操作时,最外层要用事务,保证数据库操作的原子性;\
2:业务逻辑统一封装到 Mode层;\
4:控制器只做URL路由,不要当作 业务方法 调用;\
5:控制器层不能出现SQL操作语句,如 ThinkPHP框架的 where()、order() 等模型方法,即,控制器中,不要出现类似这样的SQL语句:D('XXX')->where()->order()->limit()->find(); where()、order()、limit() 等SQL方法只能出现在 Model层

十:开发注意事项

1:一个PHP文件中,至允许声明一个类。

2:不允许使用三元运算符来进行判断。

3:大括号的开始必须在类名的下一行顶格。例如:

class Think
{
    // ...
}

4:函数或方法的初始大括号应该在函数声明的下一行顶格。例如: 

function get_client_ip()
{
    // …
}

5:引用只允许定义在函数参数中,实时传递引用是禁止的。例如:

// 引用定义在函数参数-允许的
function defineRefInMethod(&$a)
{
    $a = 'a';
} 
defineRefInMethod($b);
echo $b; // 'a'
// 实时传递引用-禁止的
function callTimePassRef($a)
{
    $a = 'a';
}
callTimePassRef(&$c);
echo $c; // 'a'

有好的建议,请在下方输入你的评论

欢迎访问个人博客 https://guanchao.site

目录
相关文章
|
2月前
|
Java PHP 开发者
PHP中的异常处理:Java常见的编码方式
在PHP开发中,掌握异常处理至关重要,它有助于预见并管理运行时错误,避免用户体验受损或数据丢失。本文介绍PHP异常处理的基本概念与实践,包括try-catch语句的使用,以及如何通过抛出和捕获异常来增强代码的健壮性和可靠性。通过示例展示如何避免常见错误,如除数为零的情况,并探讨多catch块和finally语句的高级用法,帮助开发者提升程序稳定性与可维护性。[总字符数:238]
24 0
|
5月前
|
JSON JavaScript PHP
PHP把unicode编码的json字符串转中文
PHP把unicode编码的json字符串转中文
41 0
|
定位技术 PHP 数据格式
php通过地址获得百度地图经纬度(逆地理编码)
php通过地址获得百度地图经纬度(逆地理编码)
94 0
|
JavaScript PHP 数据安全/隐私保护
解决php中字符串输出一样但比较不相等(编码不同导致长度不一样)
解决php中字符串输出一样但比较不相等(编码不同导致长度不一样)
131 0
|
PHP 数据安全/隐私保护
php base64不能解码_PHP base64编码后解码乱码的解决办法
php base64不能解码_PHP base64编码后解码乱码的解决办法
420 0
|
JSON PHP 数据库
PHP:Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换
PHP:Laravel cast array json数据存数据库时unicode 编码问题和update更新不触发数据转换
153 0
|
网络协议 编译器 PHP
php中的进制和编码
字符串在线转2进制 工具 由于计算机是MG发明的,一开始的映射表是ASSIC码,用一个字节(8位)表示一个符号或者字母 比如小写字母a对应的是97 相应的2进制为01100001 8个位的2进制最大值是11111111 所以当它不够用之后,就出现了双字节字符集
138 0
php中的进制和编码
|
应用服务中间件 PHP nginx
php实现img转ASCII编码图片
php实现img转ASCII编码图片
116 0
php实现img转ASCII编码图片