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

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM