Laravel - API 的最佳命名约定

以下是大多数使用 PHP 的科技公司遵循的基本命名约定。
这种命名约定符合Laravel [PHP] 编码标准和 PSR 规范。

最佳结合 SOLID 原则

并记住尽可能遵循 KISS 原则

Laravel - API 的最佳命名约定

以下列出了命名标准:

  • 对于类、接口/契约、特性:使用 大驼峰式「PascalCase」
  • 对于常量:使用「TITLE_CASE」
  • 对于函数/方法、类属性和变量:使用 小驼峰式「camelCase」
  • 对于数组索引/数据库字段名/模型可填充项/模型关系:使用 蛇形命名法「lower_snake_case」
  • 对于路由:使用 短横线「lower-kebab-case」

以下是标准用法和示例:

一、对于类、接口/契约、特性(大驼峰式 PascalCase

// 类
class AuthController extends Controller
{
    // ...
}

// 接口 / 契约
interface LoginInterface 
{
   // ...
}

// 特性
trait Audit
{
   // ...
}

二、对于常量(TITLE_CASE

namespace App\Constants;

class AppConstant {
    const DEFAULT_PAGE = 1;
    const DEFAULT_PAGE_LIMIT = 10;
    const MAX_PAGE_LIMIT = 100;
    const ALPHANUMERIC_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    const NUMERIC_CHARACTERS = '0123456789';
    const ALPHA_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    const UPPERCASE_ALPHA_CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    const LOWERCASE_ALPHA_CHARACTERS = 'abcdefghijklmnopqrstuvwxyz';
}

三、对于函数/方法、类属性和变量(小驼峰式 camelCase

// 函数 / 方法
public function refreshToken() : JsonResponse {
    return $this->loginService->refreshToken();
}

//类属性
class AuthController extends Controller
{
    // these are the class properties
    protected $loginService;
    protected $logoutService;
}

//变量
public function __construct(LoginService $loginService, LogoutService $logoutService) {
    $this->loginService = $loginService;
    $this->logoutService = $logoutService;
}

四、对于数组索引/数据库字段名/模型可填充项/模型关系(蛇形命名法 lower_snake_case

//数组索引
foreach($age as $x => $x_value) {
  return $x_value;
}

//数据库字段名
public function up()
{
    Schema::create('audits', function (Blueprint $table) {
        $table->id();
        $table->string('user_type')->nullable();
        $table->unsignedBigInteger('user_id')->nullable();
        $table->index(['user_id', 'user_type']);
    });
}

//模型可填充项
protected $fillable = [
    'first_name',
    'last_name',
    'username',
    'email',
    'password',
];

注意:模型可填充项需要与数据库列匹配,这样才能正常工作,但任何连接到数据库的类(如 Eloquent 模型类),类属性camelCase也需要与数据库列lower_snake_case匹配。

五、对于路由(短横线 lower-kebab-case

Route::group(['middleware' => 'auth:api'], function() {
    Route::post('refresh-token', [AuthController::class, 'refreshToken']);
    Route::post('logout', [AuthController::class, 'logout']);
});

更多用法及使用案例可以积极评论。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 2年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
chowjiawei

大佬 还是有点少 可以在补充些

2年前 评论
playmaker (楼主) 2年前

我就是这么做的

2年前 评论
playmaker (楼主) 2年前

以团队风格为主吧,因为这种东西主观性比较强,可以加必须,推荐这种语气词。因为对于控制器方法命名,下划线函数式命名我也见过不少,路由小驼峰,下划线也挺多的,有的甚至类似微信。

2年前 评论

在一堆大写驼峰风格的函数名命名中,突然出现一个蛇形风格的函数命名,简直就像漆黑夜里的萤火虫一样耀眼🤣😂🤣😂

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!