摘要:繼續(xù)學(xué)習分割線看看是怎么輸出這個數(shù)據(jù)目錄下的加載了下的的自動加載加載的配置初始化應(yīng)用初始化的內(nèi)容指定項目基礎(chǔ)目錄注冊服務(wù)容器注冊異常處理實例
繼續(xù)學(xué)習lumen5.5
-----------------------分割線-----------------------
看看是怎么輸出"Lumen (5.5.2) (Laravel Components 5.5.*)"這個數(shù)據(jù)
public目錄下的index.php加載了bootstrap下的app.php
require_once __DIR__."/../vendor/autoload.php";//composer的自動加載
(new DotenvDotenv(__DIR__."/../"))->load(); //加載.env的配置
$app = new LaravelLumenApplication( realpath(__DIR__."/../") );//初始化應(yīng)用 //初始化的內(nèi)容 public function __construct($basePath = null) { if (! empty(env("APP_TIMEZONE"))) { date_default_timezone_set(env("APP_TIMEZONE", "UTC")); } //指定項目基礎(chǔ)目錄 $this->basePath = $basePath; //注冊服務(wù)容器 $this->bootstrapContainer(); //注冊異常處理 $this->registerErrorHandling(); //實例化Route路由類 $this->bootstrapRouter(); }
然后是注冊核心組件進服務(wù)容器中(laravel的服務(wù)容器后面再學(xué)習)
主要看
$app->router->group([ "namespace" => "AppHttpControllers", ], function ($router) { require __DIR__."/../routes/web.php"; });
加載路由文件以便它們可以全部被添加到應(yīng)用,這將提供所有請求接口的響應(yīng)
第一個參數(shù)是指定處理接口屬性設(shè)置,namespance屬性是指定處理請求的控制器所在目錄
第二個參數(shù)是一個閉包函數(shù),傳一個匿名函數(shù)到group方法里
找到web.php
$router->get("/", function () use ($router) { return $router->app->version(); });
把web.php定義的路由都放在這個這個匿名函數(shù)中,相當于下面這樣
$app->router->group([ "namespace" => "AppHttpControllers", ], function ($router) { $router->get("/", function () use ($router) { return $router->app->version(); }); });
然后看Router類里面的group方法,有一個
call_user_func($callback, $this);
這段代碼執(zhí)行傳進來的匿名函數(shù),就是web.php定義的所有路由
$router->get("/", function () use ($router) { return $router->app->version(); });
找到Router類里面的get方法看到調(diào)用了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]部分(這是舊版中文文檔,新版要看官網(wǎng)的英文版,不同之處在于$app換成$route,舊的路由定義文件是routes.php,新的是web.php)
可以把上面那個請求路由的代碼翻譯成,當請求路由為"api.com/index.php/"時候,調(diào)用匿名函數(shù)
function () use ($router) { return $router->app->version(); }
進行響應(yīng);可以看出當執(zhí)行匿名函數(shù)時調(diào)用的是application類里面的version方法
public function version() { return "Lumen (5.5.2jjj) (Laravel Components 5.5.*)"; }
PS:這里只是return,還不是echo輸出,繼續(xù)往下看,$app->run();下次再補充....
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26161.html
摘要:最近在學(xué)習框架寫接口,記憶力比較差所以順便寫下筆記分割線因為直接學(xué)最新版的所以,記得開啟的,,擴展還有可以用的打開命令 最近在學(xué)習lumen框架寫API接口,記憶力比較差所以順便寫下筆記~ -----------------------------分割線-------------------------------- 因為直接學(xué)最新版的所以,PHP >=7.0記得開啟php.ini的o...
摘要:想要做到這一點,你需要定義中間件為。如果你希望在及方法被調(diào)用時使用一致的中間件實例,只需在容器中使用容器的方法注冊中間件以上就是路由和中間件的學(xué)習,最后那那其實理解得有點虛,有錯記得指出修正,謝謝 前幾篇了解完從請求到響應(yīng)的流程后,仔細學(xué)習下路由和中間件的玩法 ----------------------------------分割線--------------------------...
摘要:接著上篇分割線是的實例,但是文件中找不到方法在類內(nèi)部看到,打開找到了方法,方法注釋寫的是主要用于運行應(yīng)用以及發(fā)送響應(yīng)主要看方法 接著上篇$app->run();--------------------分割線------------------------ $app是Application的實例,但是Application.php文件中找不到run方法在類內(nèi)部看到use Concerns...
摘要:打開瀏覽器輸入,如無意外,將出現(xiàn)如下圖,表示框架安裝成功。四系統(tǒng)內(nèi)部后臺管理系統(tǒng)這個是框架自帶的后臺登錄管理系統(tǒng),只需要簡單的命令即可運行。出現(xiàn)上圖即為,創(chuàng)建模型成功。 在PHP個各種web開發(fā)框架中,laravel算是一款簡潔、優(yōu)雅的開發(fā)框架,本人也剛剛接觸到laravel,通過學(xué)習大神們的一些文章,下面是我的一些心得體會,希望可以給初學(xué)者一些幫助,大家一起進步。言歸正傳: 本人環(huán)境...
摘要:二十世紀八十年代是機器學(xué)習成為一個獨立的學(xué)科領(lǐng)域各種機器學(xué)習技術(shù)百花初綻的時期。這時候,人們把機器學(xué)習劃分為機械學(xué)習,示教學(xué)習,類比學(xué)習,歸納學(xué)習。三機器學(xué)習的分類機器學(xué)習中,有個定理叫沒有免費午餐定理,簡稱定理。 一、人工智能與機器學(xué)習 說到人工智能,就不得不提圖靈測試。圖靈測試是阿蘭圖靈在1950年提出的一個關(guān)于機器是否能夠思考的著名實驗,測試某機器是否能表現(xiàn)出與人等價或無法區(qū)分的...
閱讀 1863·2021-11-25 09:43
閱讀 1504·2021-09-02 15:21
閱讀 3472·2019-08-30 15:52
閱讀 1511·2019-08-30 12:48
閱讀 1308·2019-08-30 10:57
閱讀 2939·2019-08-26 17:41
閱讀 688·2019-08-26 11:59
閱讀 1379·2019-08-26 10:41