最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談一種Laravel路由文件劃分方式

 更新時間:2021年05月29日 15:28:29   作者:八重櫻  
我估計我們所有人都遇到過這樣的情況,即我們有一個寫滿路由的超大文件。不騙你,這讓我很長一段時間幾近抓狂,我不得不想個辦法解決這個問題。 因此,這就是我最終用來構(gòu)造路由文件的方法。

最初,我想到了利用路由組方法可以接收文件,這就是 laravel 在 RouteServiceProvider 處拆分路由的方式。

<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider{
    protected $namespace = 'App\Http\Controllers';
    public function boot(){
        parent::boot();
    }
    public function map(){
        $this->mapApiRoutes();
        $this->mapWebRoutes();
    }
    protected function mapWebRoutes(){
        Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
    }
    protected function mapApiRoutes(){
        Route::prefix('api')
        ->middleware('api')
        ->namespace($this->namespace)
        ->group(base_path('routes/api.php'));
    }
}

我將與用戶有關(guān)的路由抽象到了一個名為 users.php 的文件中,并將 mapApiRoutes 復(fù)制為 mapUsersRoutes 并指向到我的 users.php 文件。

public function map(){
    $this->mapApiRoutes();
    $this->mapWebRoutes();
    $this->mapUsersRoutes();
}
protected function mapUsersRoutes(){
    Route::prefix('api')
    ->middleware('api')
    ->namespace($this->namespace)
    ->group(base_path('routes/users.php'));
}

我知道您在想什么,顯然,這并不是最好的解決方案,因為每當(dāng)我們需要創(chuàng)建新文件時,都必須像之前一樣注冊它。 因此,我不得不改進這個最初的想法。

我想到了將整個應(yīng)用程序中的公共部分拆分成單獨的路由文件,并且我想到我們的所有路由都不能超出已認證、訪客和公共路由的范圍。

我將路由文件夾的結(jié)構(gòu)優(yōu)化成下面這樣:

├── routes  

│   ├── api   

│   │   ├── public

│   |   │   ├── users.php

│   │   ├── auth

│   |   │   ├── users.php

│   │   ├── guest

│   |   │   ├── users.php

乍一看,您可能會認為 “嗯,它并沒有太大變化,我們還是需要去映射這些文件”。 但是,實際上我們可以利用 php 原生提供的名為 glob 的函數(shù),這是一種開箱即用的解決方案,因為我們沒有與 laravel 的解決方案耦合。

glob 接收一個正則,并且可以在與我們的正則匹配的路徑下找到文件名。 因此,我們的路由是在特定文件夾下組織的,我們現(xiàn)在可以在這些文件夾下找到所有文件,并將它們注冊到其中間件。

<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider{
    protected $namespace = 'App\Http\Controllers';
    public function map(){
        $this->mapAuthRoutes();
        $this->mapGuestRoutes();
        $this->mapPublicRoutes();
    }
    protected function mapWebRoutes(){
        Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
    }
    protected function mapAuthRoutes(){
        foreach (glob(base_path('routes/api/auth/*.php')) as $file) {
            Route::prefix('api')
            ->middleware(['api', 'auth:api'])
            ->group($file);
        }
    }
    protected function mapGuestRoutes(){
        foreach (glob(base_path('routes/api/guest/*.php')) as $file) {
            Route::prefix('api')
            ->middleware(['api', 'guest:api'])
            ->group($file);
        }
    }
    protected function mapPublicRoutes(){
        foreach (glob(base_path('routes/api/public/*.php')) as $file) {
            Route::prefix('api')
            ->middleware('api')
            ->group($file);
        }
    }
}

現(xiàn)在,無論何時我們創(chuàng)建一個新文件,foreach 都將找到它,因為它是使用正則匹配(該文件位于對應(yīng)的路徑下,并且具有 PHP 擴展名,因此它與我們的正則匹配)。簡直太騷了!但是請稍等片刻。

這些文件將如何注冊?

如果您研究過 laravel 的生命周期,您就知道服務(wù)提供者是 laravel 請求的生命周期的一部分,我們可以利用此功能動態(tài)注冊我們的路線。

以上就是淺談一種Laravel路由文件劃分方式的詳細內(nèi)容,更多關(guān)于一種Laravel路由文件劃分方式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問題實例

    php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問題實例

    這篇文章主要介紹了php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問題的方法,實例分析了php+mysqli處理事務(wù)的提交與回滾的技巧,需要的朋友可以參考下
    2015-02-02
  • Windows2003下php5.4安裝配置教程(Apache2.4)

    Windows2003下php5.4安裝配置教程(Apache2.4)

    這篇文章主要為大家詳細介紹了在Windows2003下Apache2.4與php5.4配置教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • php FLEA中二叉樹數(shù)組的遍歷輸出

    php FLEA中二叉樹數(shù)組的遍歷輸出

    最近在做一個項目其中涉及到“無限級回復(fù)”,F(xiàn)LEA中中有一個關(guān)于數(shù)組的輔助類:FLEA_Helper_Array,這個類里面有一個非常強大的數(shù)組處理方法:array_to_tree,這個方法可以把二維數(shù)組轉(zhuǎn)換為二叉樹結(jié)構(gòu)
    2012-09-09
  • PHP開發(fā)中常用的字符串操作函數(shù)

    PHP開發(fā)中常用的字符串操作函數(shù)

    在編程的過程當(dāng)中,字符串的操作是非常重要的并且經(jīng)常會被用到,字符串常用的操作具體的包括字符串的拼接,替換字符串,查找字符串,比較字符串,復(fù)制字符串以及計算字符串的長度等等.
    2011-02-02
  • 全面解讀PHP的人氣開發(fā)框架Laravel

    全面解讀PHP的人氣開發(fā)框架Laravel

    這篇文章主要介紹了PHP的人氣開發(fā)框架Laravel,并對一些主要的技術(shù)特點進行了相關(guān)的舉例,需要的朋友可以參考下
    2015-10-10
  • 細談php中SQL注入攻擊與XSS攻擊

    細談php中SQL注入攻擊與XSS攻擊

    通常在編程中程序員要考慮的問題不僅是代碼效率與代碼復(fù)用性,而且還要考慮一些安全問題
    2012-06-06
  • PHP 加密/解密函數(shù) dencrypt(動態(tài)密文,帶壓縮功能,支持中文)

    PHP 加密/解密函數(shù) dencrypt(動態(tài)密文,帶壓縮功能,支持中文)

    采用SHA1生成密匙簿,超過300個字符使用ZLIB壓縮 支持中文,大家可以測試下。
    2009-01-01
  • 最新評論

    太康县| 南投县| 长岛县| 商都县| 延津县| 利津县| 仁怀市| 三穗县| 房产| 盐源县| 巴南区| 隆回县| 高淳县| 张掖市| 惠水县| 朝阳区| 镇坪县| 绥化市| 涟源市| 淮北市| 呼和浩特市| 麻江县| 宁国市| 黎川县| 富源县| 白河县| 凤山市| 丽江市| 五指山市| 波密县| 昌宁县| 雷波县| 邹城市| 宁波市| 玉环县| 娱乐| 肃南| 九龙城区| 敦煌市| 阿拉善右旗| 纳雍县|