这是另一位大哥写的,感觉写的很好,在此感谢他的分享。这位大哥的这篇文章详细介绍了原理,但是感觉初次看的人可能需要下面这个前期知识储备:
还有一点就是我的实际代码和他的有点不同,这里再贴一下实际的源码,顺道也再整理一下思路:
这里拿vendor/laravel/framework/src/Illuminate/Support/Facades/App.php
为例进行介绍:
<?php
namespace Illuminate\Support\Facades;
/**
* 这里顺道记录一个小技巧,在函数前写这样的注释,会被PHPSrorm解析,表示该类所拥有的方法
* @method static string version()
* @method static string basePath()
* @method static string environment()
* @method static bool isDownForMaintenance()
* @method static void registerConfiguredProviders()
* @method static \Illuminate\Support\ServiceProvider register(\Illuminate\Support\ServiceProvider|string $provider, array $options = [], bool $force = false)
* @method static void registerDeferredProvider(string $provider, string $service = null)
* @metho