亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

laravel5.1 源碼閱讀

2019-11-11 03:46:46
字體:
來源:轉載
供稿:網友

laravel大致的運行過程,先記錄一下。 當然我是在看到了 這個博文https://my.oschina.net/falcon10086/blog/647507,寫的很棒。

laravel唯一的路口文件 /public/index.php 一步一步來看

require __DIR__.'/../bootstrap/autoload.php';

引入類加載器,查看autoload.php文件

define('LARAVEL_START', microtime(true));require __DIR__.'/../vendor/autoload.php';$compiledPath = __DIR__.'/cache/compiled.php';if (file_exists($compiledPath)) { require $compiledPath;}

第一行代碼定義程序運行的開始事件; 第二段代碼請求了vendor/autoload.php文件,也就是說使用了composer自帶的類加載器。 第三段和第四段代碼用來優化效率。

現在繼續看index.php文件

$app = require_once __DIR__.'/../bootstrap/app.php';

查看bootstrap/app.php文件

$app = new Illuminate/Foundation/application( realpath(__DIR__.'/../'));$app->singleton( Illuminate/Contracts/Http/Kernel::class, App/Http/Kernel::class);$app->singleton( Illuminate/Contracts/Console/Kernel::class, App/Console/Kernel::class);$app->singleton( Illuminate/Contracts/Debug/ExceptionHandler::class, App/Exceptions/Handler::class);return $app;

先創建了一個 Illuminate/Foundation/Application 實例,該類繼承Illuminate/Container/Container,調用其singleton()方法綁定接口和類,最后返回實例,這里是一個單例。

看一下 Illuminate/Foundation/Application 構造函數

public function __construct($basePath = null) { $this->registerBaseBindings(); $this->registerBaseServicePRoviders(); $this->registerCoreContainerAliases(); if ($basePath) { $this->setBasePath($basePath); } }

$this->registerBaseBindings()方法

protected function registerBaseBindings() { /* * 首先需要明白當前類繼承自 Illuminate/Container/Container * * setInstance 是 Illuminate/Container/Container 中的方法將類和當前對象綁定, 當然這樣說是為了跟容易表示,下面的注釋也是如此 */ static::setInstance($this); /* * 將'app'和當前對象放在 Illuminate/Container/Container 的 instances 數組中, * 形成一個映射,當然當前類繼承自 Illuminate/Container/Container 也就是調用自己的 instance() 方法 * 這樣'app'指向了當前對象,實現綁定。 */ $this->instance('app', $this); /* * 和上面的類似,綁定 */ $this->instance('Illuminate/Container/Container', $this); }

$this->registerBaseServiceProviders()

protected function registerBaseServiceProviders() { /* * 依賴注入: 當前對象被注入到 EventServiceProvider、RoutingServiceProvider 中 */ $this->register(new EventServiceProvider($this)); $this->register(new RoutingServiceProvider($this)); }

注冊服務提供器。

$this->registerCoreContainerAliases()

public function registerCoreContainerAliases() { $aliases = [ 'app' => ['Illuminate/Foundation/Application', 'Illuminate/Contracts/Container/Container', 'Illuminate/Contracts/Foundation/Application'] ... ]; foreach ($aliases as $key => $aliases) { foreach ((array) $aliases as $alias) { $this->alias($key, $alias); } } }

注冊核心類的別名,簡化命名; aliases 數組中一個復雜的名字對應別名。 例如下面的: Illuminate/Foundation/Application => app; Illuminate/Contracts/Container/Container => app; foreach 就是具體的綁定。

現在分析app.php中的$app->singleton()。該方法將接口和具體實現類綁定在一起,之后用到接口的時候會調用對應的具體實現。該部分源碼比較復雜,可以自己看一下,主要部分是 Illuminate/Container/Container 的 make 和 build 方法。

現在再次回到index.php

$kernel = $app->make(Illuminate/Contracts/Http/Kernel::class);

由于 bootstrap/app.php 中綁定了接口和具體實現,這里調用 make 就會創建App/Http/Kernel::class 類實例。

最后kernel 處理 http 請求,接收請求, 發送響應, 終止程序,處理一些收尾的工作。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品美女久久久久久免费| 欧美亚洲激情视频| 8090成年在线看片午夜| 97视频人免费观看| 国产精品91一区| 一本大道香蕉久在线播放29| 久久网福利资源网站| 色综合视频一区中文字幕| 亚洲男人天堂网| 久久久亚洲精品视频| 欧美国产日韩中文字幕在线| 欧美日韩福利视频| 欧美日韩爱爱视频| 欧美乱大交xxxxx另类电影| 97视频在线观看成人| 亚洲春色另类小说| 疯狂做受xxxx欧美肥白少妇| 在线视频亚洲欧美| 亚洲精品美女免费| 欧洲精品久久久| 久久综合免费视频影院| 国产午夜精品理论片a级探花| 海角国产乱辈乱精品视频| 91在线中文字幕| 精品国产区一区二区三区在线观看| 欧美黑人性猛交| 亚洲大胆人体视频| 成人网中文字幕| 国产精品美女主播在线观看纯欲| 欧美成人免费观看| 51精品在线观看| 国产精品自产拍高潮在线观看| 久久精品电影网| 国模gogo一区二区大胆私拍| 韩国欧美亚洲国产| 久久久久久有精品国产| 国产精品福利在线观看网址| 久久久最新网址| 色综合久久88色综合天天看泰| 亲爱的老师9免费观看全集电视剧| 中文字幕精品影院| 国产精品亚洲片夜色在线| 亚洲天堂av网| 久久久欧美一区二区| 亚洲美腿欧美激情另类| 国产成人免费91av在线| 午夜精品免费视频| 欧美黄色片在线观看| 国产精品黄色影片导航在线观看| 91免费在线视频| 疯狂做受xxxx高潮欧美日本| 欧美日本精品在线| 热99精品只有里视频精品| 日韩极品精品视频免费观看| 欧美中文字幕视频| 亚洲高清色综合| 久久久久久亚洲精品不卡| 操日韩av在线电影| 国产欧美在线看| 国产一区二区黑人欧美xxxx| 国产经典一区二区| 韩国欧美亚洲国产| 色噜噜狠狠狠综合曰曰曰88av| 欧美丰满老妇厨房牲生活| 欧亚精品中文字幕| 曰本色欧美视频在线| 亚洲欧美成人一区二区在线电影| 久久久久国产一区二区三区| 久久精品99国产精品酒店日本| 久久手机精品视频| 一区二区三区精品99久久| 91精品久久久久久久久久久久久久| 日韩欧美综合在线视频| 国产精品女人久久久久久| 亚洲精品日韩欧美| 亚洲国产精品成人va在线观看| 欧美性受xxxx白人性爽| 欧美激情精品久久久久久黑人| 欧美日韩国产综合视频在线观看中文| 欧美性猛交xxxx免费看漫画| 久久久久久久久国产| 国产精品偷伦视频免费观看国产| 中文字幕久热精品视频在线| 国产深夜精品福利| 国产精品私拍pans大尺度在线| 欧美性高潮在线| 国产成人精品免费视频| 久久精品国产精品亚洲| 久久69精品久久久久久国产越南| 亚洲国产精品一区二区久| 国产精品video| 777777777亚洲妇女| 欧美性受xxxx白人性爽| 91在线播放国产| 亚洲成人av在线播放| 亚洲精品一区二区久| 69**夜色精品国产69乱| 久久网福利资源网站| 欧美精品在线网站| 91产国在线观看动作片喷水| 久久人人爽国产| 国产精品网站入口| 一区国产精品视频| 亚洲欧洲日本专区| 国产999精品久久久影片官网| xvideos亚洲| 欧美韩日一区二区| 懂色av中文一区二区三区天美| 欧美激情区在线播放| 亚洲欧美激情视频| 国产在线久久久| 韩国三级电影久久久久久| 精品国产一区二区三区久久狼5月| 久久精品91久久久久久再现| 黑人精品xxx一区一二区| 国产精品一香蕉国产线看观看| 日韩美女av在线免费观看| 黄色一区二区三区| 伊人伊成久久人综合网小说| 国产91精品最新在线播放| 国产精品久久久久99| 亚洲第一中文字幕在线观看| 精品一区二区电影| 91精品在线观| 欧美日韩一区二区免费视频| 国产在线日韩在线| 国产精品美女午夜av| 亚洲第一男人天堂| 欧美黑人xxxⅹ高潮交| 久久97精品久久久久久久不卡| 在线亚洲欧美视频| 中文字幕一精品亚洲无线一区| 欧美国产高跟鞋裸体秀xxxhd| 69av在线视频| 欧美日韩国产限制| 欧美在线免费观看| 欧美精品在线免费播放| 日韩精品高清在线观看| 一区二区中文字幕| 日韩小视频在线| 青青a在线精品免费观看| 亚洲欧美另类国产| 精品国产欧美一区二区五十路| 国产成人精品久久| 欧美在线视频免费观看| 亚洲国产精品资源| 成人免费观看网址| 国产色婷婷国产综合在线理论片a| 97在线日本国产| 国产成+人+综合+亚洲欧洲| 日本19禁啪啪免费观看www| 欧美激情一二三| 久久夜精品va视频免费观看| 91精品久久久久久久久青青| 国产精品爽爽爽| 国产91九色视频| 日韩av在线直播| 亚洲成人久久电影| 岛国av一区二区| 国产成人avxxxxx在线看| 欧美亚洲另类制服自拍| 国产精品久久久一区| 欧美日韩久久久久| 国产成人啪精品视频免费网|