前言
如果你还不知道什么是依赖注入,可以先看看我前面写过的PHP & 理解 Laravel 中的 Dependency Injection (依赖注入)
一、门面 VS 依赖注入
1.1 区别
- 门面是静态调用
className::xxx()
- 依赖注入是传递类作为参数调用
$name->()
1.2 什么时候用门面和依赖注入?
- 两者混合使用是最佳的
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('/regsiger', function (Request $request) {
$user_name = $request->input('user_name');
return $user_name;
});
如果非要说什么时候用门面,什么时候用注入的话,我的建议是调用次数少的用门面,次数较多的用依赖注入。
二、门面 VS helper functions(全局函数 or 助手函数)
两者之间大同小异,有时 Facades 内部也是调用了 helper functions,所以像下面是等价的,都属于语法糖 API。
use Illuminate\Support\Facades\View;
return View::make('profile');
return view('profile');
参考文献:
https://laravel.com/docs/9.x/facades#facades-vs-dependency-injection