开发规范

辅助函数

https://laravel-china.org/docs/laravel/5.5/helpers

必须 把所有的『自定义辅助函数』存放于 bootstrap 文件夹中。

并在 bootstrap/app.php 文件的最顶部进行加载:

require __DIR__ . '/helpers.php';

 

数据模型相关的命名规范:

  • 数据模型类名 必须 为「单数」, 如:App\Models\Photo
  • 类文件名 必须 为「单数」,如:app/Models/Photo.php
  • 数据库表名字 必须 为「复数」,多个单词情况下使用「Snake Case」 如:photosmy_photos
  • 数据库表迁移名字 必须 为「复数」,如:2014_08_08_234417_create_photos_table.php
  • 数据填充文件名 必须 为「复数」,如:PhotosTableSeeder.php
  • 数据库字段名 必须 为「Snake Case」,如:view_countis_vip
  • 数据库表主键 必须 为「id」
  • 数据库表外键 必须 为「resource_id」,如:user_idpost_id
  • 数据模型变量 必须 为「resource_id」,如:$user_id$post_id

利用 Trait 来扩展数据模型

有时候数据模型里的代码会变得很臃肿,应该 利用 Trait 来精简逻辑代码量,提高可读性,类似于 Ruby China 源码

借鉴于 Rails 的设计理念:「Fat Models, Skinny Controllers」。

存放于文件夹:app/Models/Traits 文件夹中。

Repository

绝不 使用 Repository,因为我们不是在写 JAVA 代码,太多封装就成了「过度设计(Over Designed)」,极大降低了编码愉悦感,使用 MVC 够傻够简单。

代码的可读性,维护和开发的便捷性,直接关系到程序员开发时的愉悦感,直接影响到项目推进效率和程序 Debug 的速度。

关于 SQL 文件

  • 绝不 使用命令行或者 PHPMyAdmin 直接创建索引或表。必须 使用 数据库迁移 去创建表结构,并提交版本控制器中;
  • 绝不 为了共享对数据库更改就直接导出 SQL,所有修改都 必须 使用 数据库迁移 ,并提交版本控制器中;
  • 绝不 直接向数据库手动写入伪造的测试数据。必须 使用 数据填充 来插入假数据,并提交版本控制器中。

Laravel 的 Model 全局作用域 允许我们为给定模型的所有查询添加默认的条件约束:https://laravel-china.org/docs/laravel/5.3/eloquent#global-scopes

必须 保持控制器文件代码行数最小化,还有可读性。

  • 不应该 为「方法」书写注释,这要求方法取名要足够合理,不需要过多注释;
  • 应该 为一些复杂的逻辑代码块书写注释,主要介绍产品逻辑 - 为什么要这么做。
  • 不应该 在控制器中书写「私有方法」,控制器里 应该 只存放「路由动作方法」;
  • 绝不 遗留「死方法」,就是没有用到的方法,控制器里的所有方法,都应该被使用到,否则应该删除;
  • 绝不 在控制器里批量注释掉代码,无用的逻辑代码就必须清除掉。

保持目录清晰

  • layouts - 页面布局文件 必须 放置于此目录下;
  • common - 存放页面通用元素;
  • pages - 简单的页面存放文件夹,如:about、contact 等;
  • resources - 对应 Restful 路由的资源路径名称,以 URI photos/create 为例,对应 create.blade.php 文件,存放在文件夹 photos 下。

必须 避免在 resources/views 目录下直接放置视图文件。

局部视图

局部视图文件 必须 使用 _ 前缀来命名,如:photos/_upload_form.blade.php

photos/index.blade.php

  • 内容列表视图
  • 对应路由器 /photos,命名 photos.index
  • 控制器方法 PhotosController@index

create_and_edit 视图

很多情况下,创建和编辑视图里的页面结构接近相似,在这种情况下,应该 使用 create_and_edit 视图。以 photos 为例:

  • PhotosController@create - 对应视图:/photos/create_and_edit.blade.php
  • PhotosController@edit - 对应 视图:/photos/create_and_edit.blade.php

用户授权我们会单独使用 Policy 授权策略 来实现。

使用基类

所有 FormRequest 表验证类 必须 继承 app/Http/Requests/Request.php 基类。

https://laravel-china.org/docs/laravel-specification/5.5/form-validation

验证类命名

FormRequest 表验证类 必须 遵循 资源路由 方式进行命名,photos 对应 app/Http/Requests/PhotoRequest.php 。

使用基类

所有 Policy 授权策略类 必须 继承 app/Policies/Policy.php 基类。

Policy 授权策略类 必须 遵循 资源路由 方式进行命名,photos 对应 /app/Policies/PhotoPolicy.php 。

https://laravel-china.org/docs/laravel-specification/5.5/policy

日期和时间

必须 使用 Carbon 来处理日期和时间相关的操作。

前端开发

  • 必须 使用 Laravel 官方前端工具做前端开发自动化;
  • 必须 保证页面只加载一个 .css 文件;
  • 必须 保证页面只加载一个 .js 文件;
  • 必须 为 .css 和 .js 增加 版本控制
  • 必须 使用 SASS 来书写 CSS 代码;

Auth 中间件

Auth 中间件 必须 书写在控制器的 __construct 方法中,并且 必须 使用 except 黑名单进行过滤,这样当你新增控制器方法时,默认是安全的。

关闭 DEBUG

XSS

必须 使用 Blade 模板引擎的 {{ $content }}语法会对用户内容进行转义。

https://laravel-china.org/docs/laravel-specification/5.5/laravel-security-practices

SQL 注入

在使用 raw() 来编写复杂查询语句时,必须 使用数据绑定。

批量赋值

Laravel 提供白名单和黑名单过滤($fillable 和 $guarded),开发者 应该 清楚认识批量赋值安全威胁的情况下合理灵活地运用。

 配置信息缓存

生产环境中的 应该 使用『配置信息缓存』来加速 Laravel 配置信息的读取。

 路由缓存

生产环境中的 应该 使用『路由缓存』来加速 Laravel 的路由注册。

数据库请求优化

关联模型数据读取时 必须 使用 延迟预加载 和 预加载 。

临近上线时 必须 使用 Laravel Debugbar 或者 Clockwork 留意每一个页面的总 SQL 请求条数,进行数据库请求调优。

https://laravel-china.org/docs/laravel-specification/5.5/laravel-optimization

 

代码生成器:https://github.com/summerblue/generator

https://laravel-china.org/docs/laravel-specification/5.5/code-generator

文档资料

 

转载于:https://www.cnblogs.com/xkfeng/p/8541091.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值