Laravel 5.x 版本在架构设计和开发体验上进行了重大革新,以下是其核心特性整理:
一、路由系统增强
-
路由缓存
通过
php artisan route:cache生成编译后的路由文件,显著提升性能:bashphp artisan route:cache # 生成路由缓存 php artisan route:clear # 清除缓存 -
路由方法注入
支持在闭包路由中直接注入依赖:
phpRoute::get('/profile', function (Request $request) { // 直接使用 $request 对象 });
二、目录结构重构
采用模块化分层设计:
app/
├── Console # Artisan 命令
├── Events # 事件类
├── Exceptions # 异常处理
├── Http # 控制器/中间件
│ ├── Controllers
│ ├── Middleware
│ └── Kernel.php
├── Jobs # 队列任务
├── Providers # 服务提供者
└── User.php # 模型示例
三、依赖注入增强
-
方法注入
控制器方法支持依赖自动解析:
phppublic function store(Request $request, UserRepository $repository) { // 同时注入 Request 和自定义仓库 } -
Blade 依赖注入
通过
@inject指令在模板注入服务:blade@inject('metrics', 'App\Services\MetricsService') 当前指标:{{ $metrics->getValue() }}
四、表单请求类
创建独立请求类处理验证逻辑:
php
php artisan make:request CreatePostRequest
php
class CreatePostRequest extends Request
{
public function rules()
{
return [
'title' => 'required|string|max:255',
'content' => 'required'
];
}
}
在控制器中直接使用:
php
public function store(CreatePostRequest $request)
{
// 自动通过验证后才执行此方法
}
五、中间件替代过滤器
弃用路由过滤器,全面采用中间件:
php
php artisan make:middleware CheckAge
php
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
}
在 Kernel.php 中全局注册:
php
protected $middleware = [
\App\Http\Middleware\CheckAge::class,
];
六、Eloquent 改进
-
批量赋值保护
模型需显式定义可填充字段:
phpprotected $fillable = ['title', 'content']; // 白名单 // 或 protected $guarded = ['id', 'api_token']; // 黑名单 -
属性转换
支持数据类型自动转换:
phpprotected $casts = [ 'is_published' => 'boolean', 'options' => 'array' ];
七、Contracts 与 Facades
-
契约接口
定义标准接口确保解耦:
phpinterface UserRepositoryInterface { public function findByEmail($email); } -
Facade 别名
在
config/app.php配置别名:php'aliases' => [ 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ];调用时直接使用:
phpExcel::create('Report', function($excel) { ... });
八、辅助工具
-
dd()调试函数替代
var_dump的调试工具:phpdd($request->all()); // 打印并终止执行 -
环境配置强化
通过
.env文件管理环境变量:envAPP_ENV=local DB_HOST=127.0.0.1
版本演进说明
| 子版本 | 重点特性 |
|---|---|
| 5.1 | LTS 支持、Eloquent 多态关联 |
| 5.2 | 身份脚手架、中间件组 |
| 5.3 | 通知系统、WebSockets 集成 |
| 5.4 | Blade 组件/Slot、Markdown 邮件 |
| 5.5 | 自动包发现、错误处理优化 |
以上特性通过提升代码组织性、安全性和开发效率,奠定了现代 PHP 框架的最佳实践基础。