Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)
版权声明:本文为博主原创文章,未经博主允许不得转载。
前面讲了singleton和Middleware,现在来继续讲ServiceProviders和Routes,还是看起始文件bootstrap/app.php
/ * | -------------------------------------------------------------------------- |登记服务提供商 | -------------------------------------------------------------------------- | |这里我们将登记所有的应用服务提供商 |用于绑定到容器服务。服务提供商 |完全可选的,所以你不需要注释掉这行。 | * / // $app->register(App\Providers\AuthServiceProvider::class); // $app->register(App\Providers\EventServiceProvider::class); $app->register(Dingo\Api\Provider\LumenServiceProvider::class); $app->register(Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); $app->register(App\Providers\User\UserServiceProvider::class);
前面的是Lumen自带的,后面的UserServiceProvider是我自己加的,我们先来看看AuthServiceProvider
namespace App\Providers; use App\User; use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; class AuthServiceProvider extends ServiceProvider { public function register() { // } public function boot() { $this->app['auth']->viaRequest('api', function ($request) { if ($request->header('api_token')) { return User:: where('api_token', '=', $request->header('api_token'))->first(); } }); } }
这里主要有两个比较核心的函数register(注册)与boot(启动),$app->register()会先注册,后启动,这里我有写一篇:Lumen手记:lumen源码解读之初始化(5)——注册(register)与启动(boot)
自己定义ServiceProviders也是同样道理:Lumen手记:如何向 IoC 容器中添加自己定义的类
再来讲一下路由,路由可以说是最简单的啦,
/ * | -------------------------------------------------------------------------- |负载的应用途径 | -------------------------------------------------------------------------- | |接下来我们将包括路线的文件,都可以被添加到 |应用。这将提供应用程序的所有URL。 |可以响应,以及可能的处理控制器。 | * / $app->group(['namespace' => 'App\Http\Controllers'], function ($app) { require __DIR__ . '/../routes/web.php'; require __DIR__ . '/../routes/user.php'; });
新建几个加载进来都可以读到,不过要注意路径和不要有重复的路由喔!
Lumen技术交流群:310493206
版权声明:本文为博主原创文章,未经博主允许不得转载。