基础规范
这是由 PHP-FIG(PHP Framework Interoperability Group)制定的 PHP 编码规范(PSR:Proposing a Standards Recommendation)
文档列表:PHP Standards Recommendations
重点阅读:PSR-1: Basic Coding Standard、PSR-12: Extended Coding Style
团队规范
代码注释
行注释:
// 空格后写注释内容
块注释:
/**
* 标题后空一行
*
* @param $user
* @return array
*/
类方法及属性顺序
- 方法顺序:
public
、protected
、private
- 属性顺序:
const
>public
>proteced
>private
class Demo
{
const TIMEOUT = 60;
public $table = 'user';
protected $status = 1;
private $field = 'age';
public function func1()
{
}
protected function func2()
{
}
private function func3()
{
}
}
代码中 MySQL 关键词大写
$db->sql('SELECT * FROM table WHERE age=18');
字符串中无变量时使用单引号
$str = ' ';
$str = 'Hello World';
$str = "Hello $name";
// SQL 语句例外(语法包含单引号)
$sql = "SELECT * FROM table WHERE name='abc'";
数组最后一个元素加逗号
增减数组元素后提交 Git,版本记录中不会产生干扰信息:
$array = [
'a',
'b',
'c',
];
Laravel 项目规范
日志规范
Laravel 遵循 RFC 5424
定义了八个日志级别,为了避免错误使用,我们使用并重新定义其中五个等级:
级别 | 说明 |
---|---|
Emergency | 紧急日志(系统不可用) |
Error | 错误日志(系统运行出现了某些错误,会导致部分功能的中断) |
Warning | 警告日志(系统运行出现了某些异常,但不会影响功能的正常运行) |
Info | 信息日志(系统运行时的一些重要信息,默认日志级别) |
Debug | 调试日志(开发调试过程中一些详细的运行信息,默认不打印) |
单数 or 复数?
为了不必要的混淆,控制器、路由、模型、数据表均使用单数命名
资源型控制器
假设需要处理 “用户” 相关的 HTTP 请求,使用 Artisan 命令创建控制器:
php artisan make:controller UserController --resource
接下来给控制器注册一个资源路由:
Route::resource('user', 'UserController');
此时资源的相关操作对应关系如下:
HTTP 方法 | URI | 动作(方法) | 路由名称 |
---|---|---|---|
GET | /user | index | user.index |
GET | /user/create | create | user.create |
POST | /user | store | user.store |
GET | /user/{user} | show | user.show |
GET | /user/{user}/edit | edit | user.edit |
PUT/PATCH | /user/{user} | update | user.update |
DELETE | /user/{user} | destroy | user.destroy |
自定义命令必须使用命名空间
所有的自定义命令,都必须使用项目命名空间,如:
php artisan namespace:send-email
php artisan namespace:clear-token
错误的例子:
php artisan send-email
php artisan clear-token