国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

lumen5.5學習(二)

shengguo / 597人閱讀

摘要:繼續學習分割線看看是怎么輸出這個數據目錄下的加載了下的的自動加載加載的配置初始化應用初始化的內容指定項目基礎目錄注冊服務容器注冊異常處理實例

繼續學習lumen5.5

-----------------------分割線-----------------------

看看是怎么輸出"Lumen (5.5.2) (Laravel Components 5.5.*)"這個數據

public目錄下的index.php加載了bootstrap下的app.php

require_once __DIR__."/../vendor/autoload.php";//composer的自動加載
(new DotenvDotenv(__DIR__."/../"))->load(); //加載.env的配置

$app = new LaravelLumenApplication(
    realpath(__DIR__."/../")
);//初始化應用

//初始化的內容
public function __construct($basePath = null)
{
    if (! empty(env("APP_TIMEZONE"))) {
        date_default_timezone_set(env("APP_TIMEZONE", "UTC"));
    }
    //指定項目基礎目錄
    $this->basePath = $basePath;
    //注冊服務容器
    $this->bootstrapContainer();
    //注冊異常處理
    $this->registerErrorHandling();
    //實例化Route路由類
    $this->bootstrapRouter();
}

然后是注冊核心組件進服務容器中(laravel的服務容器后面再學習)

主要看

$app->router->group([
    "namespace" => "AppHttpControllers",
], function ($router) {
    require __DIR__."/../routes/web.php";
});

加載路由文件以便它們可以全部被添加到應用,這將提供所有請求接口的響應
第一個參數是指定處理接口屬性設置,namespance屬性是指定處理請求的控制器所在目錄
第二個參數是一個閉包函數,傳一個匿名函數到group方法里

找到web.php

$router->get("/", function () use ($router) {
    return $router->app->version();
});

把web.php定義的路由都放在這個這個匿名函數中,相當于下面這樣

$app->router->group([
    "namespace" => "AppHttpControllers",
], function ($router) {
    $router->get("/", function () use ($router) {
        return $router->app->version();
    });
});

然后看Router類里面的group方法,有一個

call_user_func($callback, $this);

這段代碼執行傳進來的匿名函數,就是web.php定義的所有路由

$router->get("/", function () use ($router) {
    return $router->app->version();
});

找到Router類里面的get方法看到調用了addRoute方法,看到名字就大概知道是添加路由的意思

    /**
     * Add a route to the collection.
     *
     * @param  array|string  $method
     * @param  string  $uri
     * @param  mixed  $action
     * @return void
     */
    public function addRoute($method, $uri, $action)
    {
        $action = $this->parseAction($action);

        $attributes = null;

        if ($this->hasGroupStack()) {
            $attributes = $this->mergeWithLastGroup([]);
        }

        if (isset($attributes) && is_array($attributes)) {
            if (isset($attributes["prefix"])) {
                $uri = trim($attributes["prefix"], "/")."/".trim($uri, "/");
            }

            if (isset($attributes["suffix"])) {
                $uri = trim($uri, "/").rtrim($attributes["suffix"], "/");
            }

            $action = $this->mergeGroupAttributes($action, $attributes);
        }

        $uri = "/".trim($uri, "/");

        if (isset($action["as"])) {
            $this->namedRoutes[$action["as"]] = $uri;
        }

        if (is_array($method)) {
            foreach ($method as $verb) {
                $this->routes[$verb.$uri] = ["method" => $verb, "uri" => $uri, "action" => $action];
            }
        } else {
            $this->routes[$method.$uri] = ["method" => $method, "uri" => $uri, "action" => $action];
        }
    }

里面做的就是把在web.php定義的路由翻譯成你想要處理的方式,最后都放在$routes這個屬性當中,這里可以參考文檔中[HTTP 路由][1]部分(這是舊版中文文檔,新版要看官網的英文版,不同之處在于$app換成$route,舊的路由定義文件是routes.php,新的是web.php)

可以把上面那個請求路由的代碼翻譯成,當請求路由為"api.com/index.php/"時候,調用匿名函數

function () use ($router) {
    return $router->app->version();
}

進行響應;可以看出當執行匿名函數時調用的是application類里面的version方法

public function version()
{
    return "Lumen (5.5.2jjj) (Laravel Components 5.5.*)";
}

PS:這里只是return,還不是echo輸出,繼續往下看,$app->run();下次再補充....

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26161.html

相關文章

  • lumen5.5學習(一)

    摘要:最近在學習框架寫接口,記憶力比較差所以順便寫下筆記分割線因為直接學最新版的所以,記得開啟的,,擴展還有可以用的打開命令 最近在學習lumen框架寫API接口,記憶力比較差所以順便寫下筆記~ -----------------------------分割線-------------------------------- 因為直接學最新版的所以,PHP >=7.0記得開啟php.ini的o...

    mindwind 評論0 收藏0
  • lumen5.5學習路由和中間件(四)

    摘要:想要做到這一點,你需要定義中間件為。如果你希望在及方法被調用時使用一致的中間件實例,只需在容器中使用容器的方法注冊中間件以上就是路由和中間件的學習,最后那那其實理解得有點虛,有錯記得指出修正,謝謝 前幾篇了解完從請求到響應的流程后,仔細學習下路由和中間件的玩法 ----------------------------------分割線--------------------------...

    1fe1se 評論0 收藏0
  • lumen5.5學習(三)

    摘要:接著上篇分割線是的實例,但是文件中找不到方法在類內部看到,打開找到了方法,方法注釋寫的是主要用于運行應用以及發送響應主要看方法 接著上篇$app->run();--------------------分割線------------------------ $app是Application的實例,但是Application.php文件中找不到run方法在類內部看到use Concerns...

    svtter 評論0 收藏0
  • windows下laravel5.5手寫教程1(適合初學者)

    摘要:打開瀏覽器輸入,如無意外,將出現如下圖,表示框架安裝成功。四系統內部后臺管理系統這個是框架自帶的后臺登錄管理系統,只需要簡單的命令即可運行。出現上圖即為,創建模型成功。 在PHP個各種web開發框架中,laravel算是一款簡潔、優雅的開發框架,本人也剛剛接觸到laravel,通過學習大神們的一些文章,下面是我的一些心得體會,希望可以給初學者一些幫助,大家一起進步。言歸正傳: 本人環境...

    GeekGhc 評論0 收藏0
  • 【機器學習】機器學習簡介

    摘要:二十世紀八十年代是機器學習成為一個獨立的學科領域各種機器學習技術百花初綻的時期。這時候,人們把機器學習劃分為機械學習,示教學習,類比學習,歸納學習。三機器學習的分類機器學習中,有個定理叫沒有免費午餐定理,簡稱定理。 一、人工智能與機器學習 說到人工智能,就不得不提圖靈測試。圖靈測試是阿蘭圖靈在1950年提出的一個關于機器是否能夠思考的著名實驗,測試某機器是否能表現出與人等價或無法區分的...

    developerworks 評論0 收藏0

發表評論

0條評論

shengguo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<