Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)
版权声明:本文为博主原创文章,未经博主允许不得转载。
前面讲了singleton和Middleware,现在来继续讲ServiceProviders和Routes,还是看起始文件bootstrap/app.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | / * | -------------------------------------------------------------------------- |登记服务提供商 | -------------------------------------------------------------------------- | |这里我们将登记所有的应用服务提供商 |用于绑定到容器服务。服务提供商 |完全可选的,所以你不需要注释掉这行。 | * / // $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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 容器中添加自己定义的类
再来讲一下路由,路由可以说是最简单的啦,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | / * | -------------------------------------------------------------------------- |负载的应用途径 | -------------------------------------------------------------------------- | |接下来我们将包括路线的文件,都可以被添加到 |应用。这将提供应用程序的所有URL。 |可以响应,以及可能的处理控制器。 | * / $app ->group([ 'namespace' => 'App\Http\Controllers' ], function ( $app ) { require __DIR__ . '/../routes/web.php' ; require __DIR__ . '/../routes/user.php' ; }); |
新建几个加载进来都可以读到,不过要注意路径和不要有重复的路由喔!
Lumen技术交流群:310493206
版权声明:本文为博主原创文章,未经博主允许不得转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!