坚持
  • 微信

当前位置:首页 > 后端技术 > THINKPHP >

tp开发规范(自我总结2)

作者:管理员 时间:2022-06-07 阅读数: 3547人阅读

开发规范

命名规范

遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范:

  1. 目录和文件

  2. 目录使用小写+下划线;

  3. 类库、函数文件统一以.php为后缀;

  4. 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;

  5. 类(包含接口和Trait)文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名;

  6. 类名(包括接口和Trait)和文件名保持一致,统一采用驼峰法命名(首字母大写);

函数和类、属性命名

  1. 类的命名采用驼峰法(首字母大写),例如 User、UserType;

  2. 方法的命名使用驼峰法(首字母小写),例如 getUserName;

  3. 属性的命名使用驼峰法(首字母小写),例如 tableName、instance;

  4. 特例:以双下划线__打头的函数或方法作为魔术方法,例如 __call 和 __autoload;

常量和配置

  1. 常量以大写字母和下划线命名,例如 APP_PATH;

  2. 配置参数以小写字母和下划线命名,例如 url_route_on 和url_convert;

  3. 环境变量定义使用大写字母和下划线命名,例如APP_DEBUG;

数据表和字段

  1. 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段,不建议使用驼峰和中文作为数据表及字段命名

注意:请理解并尽量遵循以上命名规范,可以减少在开发过程中出现不必要的错误

语法规范

  1. 尽量使用php7新语法

  2. 每个 namespace 命名空间声明语句和 use 声明语句块后面,必须 插入一个空白行

  3. 类的开始花括号({) 必须 写在类声明后自成一行,结束花括号(})也 必须 写在类主体后自成一行

  4. 方法的开始花括号({) 必须 写在函数声明后自成一行,结束花括号(})也 必须 写在函数主体后自成一行。

  5. 类的属性和方法 必须 添加访问修饰符(private、protected 以及 public),abstract 以及 final 必须 声明在访问修饰符之前,而 static 必须 声明在访问修饰符之后

  6. 控制结构的关键字后 必须 要有一个空格符,而调用方法或函数时则 一定不可 有

  7. 控制结构的开始花括号({) 必须 写在声明的同一行,而结束花括号(}) 必须 写在主体后自成一行

  8. 纯 PHP 代码文件 必须 省略最后的 ?> 结束标签

  9. 所有方法,类,控制器类,都 必须 添加访问修饰符

    /** 
    * 中文注释
    * @param string $str 声明类型 
    * @param array $arr 
    * @return bool 
    */
    public function action(string $str, array $arr){
         return true;
    }
  10. 参数列表中,每个逗号后面 必须 要有一个空格,而逗号前面 一定不可 有空格

     function foo($arg1, &$arg2, $arg3 = []) { 
            // method body 
     }
  11. 参数 可以 分列成多行,此时包括第1个参数在内的每个参数都 尽量 单独成行。

    $foo->bar(
        $longArgument,
        $longerArgument,    
        $muchLongerArgument
    );
  12. 标准的 if 结构如下代码所示,请留意「括号」、「空格」以及「花括号」的位置, 注意 else 和 elseif 都与前面的结束花括号在同一行


  13. 赋值等号前后必须加空格符


PHP 7.1+ 常用新语法

    1.三元运算符

true];
//之前
echo isset($arr['azhe']) ? $arr['azhe'] : '';
//之后
echo $arr['azhe'] ?? '';

    2.define() 定义常量数组

define('ARR',['a','b']);

    3.命名空间优化

<?php
 //PHP7之前语法
  use FooLibrary\Bar\Baz\ClassA;
  use FooLibrary\Bar\Baz\ClassB;
  // PHP7新语法写法  
  use FooLibrary\Bar\Baz\{ ClassA, ClassB};