Martin Fowler也表示过,他最喜欢的一句谚语是:
“在计算机科学中有两件难事:缓存失效和命名。(There are only two hard things in Computer
Science: cache invalidation and naming things.)”
有篇文章总结了一些命名Laravel开发的命名规范,原文地址 https://webdevetc.com/blog/laravel-naming-conventions/
我总结了一下主要是以下几点
控制器命名
- 控制器应使用PascalCase(即每个单词首字母大写),并且是单数形式,以"Controller"结尾。例如:BlogController,AuthController,UserController。
- 方法命名
VERB | URI | TYPICAL METHOD NAME | ROUTE NAME |
---|---|---|---|
GET | /photos | index() | photos.index |
GET | /photos/create | create() | photos.create |
POST | /photos | store() | photos.store |
GET | /photos/{photo} | show() | photos.show |
GET | /photos/{photo}/edit | edit() | photos.edit |
PUT/PATCH | /photos/{photo} | update() | photos.update |
DELETE | /photos/{photo} | destroy() | photos.destroy |
数据库命名
- 数据库表名应使用snake_case(即单词间用下划线分隔),并且是复数形式。例如:posts,project_tasks,uploaded_images。
- 关联表(Pivot Tables):关联表名应全部小写,按字母顺序排列的模型名,用下划线分隔。例如:post_user,task_user。
- 表列名:表列名应使用snake_case,全部小写。例如:post_body,id,created_at。
- 主键:主键通常命名为id。
- 外键:外键应是模型名(单数)后跟_id。例如:comment_id,user_id。
变量命名
- 普通变量应使用camelCase(即第一个单词首字母小写),如果是集合或数组,则变量名应为复数形式。例如: u s e r s (多个用户对象的集合), users(多个用户对象的集合), users(多个用户对象的集合),user(单个用户对象)。
模型命名
-
模型应使用PascalCase,单数形式。例如:User,ForumThread,Comment。
-
模型属性:模型属性应使用snake_case。例如: t h i s − > u p d a t e d a t , this->updated_at, this−>updatedat,this->title。
-
模型方法:模型方法应使用camelCase。例如:public function get(),public
function getAll()。 -
关系
- hasOne或belongsTo关系:单数形式,例如:public function postAuthor(),public function phone()。
- hasMany,belongsToMany,hasManyThrough关系:复数形式,例如:public function comments(),public function roles()。
- 多态关系:方法名应能够反映关联,例如:public function category()。
总结
这篇文章中的命名规范绝大多数是没有问题的,这些规范不限于PHP或者Laravel都是通用的。只有一点就是模型中的属性命名,这个规范里面里面用的是蛇形,因为这个来源于框架层面,跟数据库字段的对应。但实际上很多语言框架Java的,甚至PHP的hyperf都提供了模型属性驼峰的解决方案,也有一些插件来支持Laravel模型属性驼峰方案。