laravel 门面 facad 源码分析
为什么代码中写Route就可以调用Illuminate\Support\Facades\Route呢?这个就是别名的用途了,很多门面都有自己的别名,这样我们就不必在代码里面写use Illuminate\Support\Facades\Route,而是可以直接用Route了。
class_alias 的作用
之前一直模糊不清楚
1 本来门面类 需要完整的路径的 Illuminate\Support\Facades\Route::get()这样的方式
2 框架 给大部分的门面类 起了一个别名 在config/app.php aliases中
3 每次框架会判断 是否是
if (isset($this->aliases[$alias])) { return class_alias($this->aliases[$alias], $alias); }
判断这个别名是否在门面别名数组中 如果在的话 就给他起一个别名 就是
Illuminate\Support\Facades\Routed 的别名 设置成Router 挺绕的
实际的应用:
\Cache::get(); 签名有个斜杠... 别名是顶级类
门面服务是在什么时候 注册启动的呢
框架在启动的过程中 会 先做一些初始化的工作 比如加载环境变量 初始化配置文件 其中就包括 注册门面的服务
源码的东西写的比较 基本都是看完的心得 慢慢补充