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

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @   程序生(Codey)  阅读(1664)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示