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

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

laravel5.1 源碼閱讀

2019-11-11 05:17:57
字體:
來源:轉載
供稿:網友

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
免费91在线视频| 中文字幕日韩在线观看| 8050国产精品久久久久久| 一区二区欧美在线| 日韩www在线| 日韩精品极品毛片系列视频| 九九精品视频在线| 亚洲女人被黑人巨大进入| 久久99热精品这里久久精品| 亚洲视频视频在线| 成人激情视频在线观看| 久久成人精品一区二区三区| 久久久亚洲影院你懂的| 欧美一性一乱一交一视频| 国产精品夜间视频香蕉| 精品久久久久久电影| 国产一区二区激情| 2021久久精品国产99国产精品| 亚洲高清不卡av| 国产精品美女999| 91视频8mav| 亚洲精品日韩丝袜精品| 国产精品视频白浆免费视频| 欧美裸体男粗大视频在线观看| 欧美大片网站在线观看| 中文字幕日本欧美| 欧美专区在线播放| 97激碰免费视频| 91精品国产91久久久久久久久| 亚洲毛片在线看| 亚洲香蕉成视频在线观看| 久久久亚洲国产天美传媒修理工| 精品毛片三在线观看| 91青草视频久久| 国产午夜精品一区二区三区| 91精品国产乱码久久久久久蜜臀| 成人免费视频在线观看超级碰| 欧美午夜精品久久久久久人妖| 神马久久桃色视频| 精品av在线播放| 亚洲一区二区三区毛片| 亚洲国产日韩欧美在线动漫| 欧美电影在线观看完整版| 一个人看的www欧美| 亚洲国产成人久久综合一区| 狠狠做深爱婷婷久久综合一区| 69国产精品成人在线播放| 久久久久久久久久久亚洲| 欧美国产日韩二区| 国产精品无av码在线观看| 欧美视频在线观看 亚洲欧| 亚洲精品www久久久久久广东| 成人中文字幕+乱码+中文字幕| 国产日韩欧美在线视频观看| 亚洲精品自在久久| 色久欧美在线视频观看| 成人免费高清完整版在线观看| 国产精品精品视频一区二区三区| 91av在线影院| 亚洲高清久久网| 91精品成人久久| 韩国国内大量揄拍精品视频| 68精品国产免费久久久久久婷婷| 国产手机视频精品| 亚洲丁香久久久| 欧美激情网站在线观看| 久久久久久久成人| 久久精品影视伊人网| 欧美又大又粗又长| 久久久久成人精品| 91黑丝在线观看| 91色精品视频在线| 国产精品成人观看视频国产奇米| 欧美午夜精品伦理| 久久久久成人精品| 日韩成人激情影院| 国产欧美va欧美va香蕉在线| 97涩涩爰在线观看亚洲| 91精品国产色综合久久不卡98| 亚洲精品久久久久中文字幕欢迎你| 亚洲品质视频自拍网| 国色天香2019中文字幕在线观看| 成人羞羞国产免费| 欧美成人h版在线观看| 国产日韩欧美综合| 亚洲综合精品伊人久久| 欧美限制级电影在线观看| 国产在线高清精品| 国产精品自拍偷拍| 国产精品人成电影在线观看| 欧美一区二区三区图| 欧美性猛交xxxx黑人| 欧美激情一级二级| 国产人妖伪娘一区91| 国产综合福利在线| 国产91免费观看| 亚洲精品456在线播放狼人| 日韩av网站电影| 国产欧美日韩综合精品| 欧美成人激情视频| 91色中文字幕| 亚洲精品中文字幕女同| 久久久中文字幕| 97超碰色婷婷| 国产一区二区三区高清在线观看| 性欧美视频videos6一9| 国产精品偷伦免费视频观看的| 亚洲欧美中文在线视频| 日韩精品电影网| 中文字幕一区二区三区电影| 黑人巨大精品欧美一区二区三区| 亚洲欧美一区二区三区久久| 亚洲综合小说区| 午夜精品久久久久久久白皮肤| 青青精品视频播放| 亚洲第一综合天堂另类专| 国内精品久久久久伊人av| 国产裸体写真av一区二区| 国产69精品久久久| 97在线免费视频| 911国产网站尤物在线观看| 久久精品99久久久香蕉| 色综合天天狠天天透天天伊人| 欧美国产乱视频| 日韩高清欧美高清| 国产91精品不卡视频| 国产亚洲精品久久| 热门国产精品亚洲第一区在线| 亚洲欧洲在线免费| 亚洲美女福利视频网站| 91精品国产成人www| 亚洲国产成人久久综合一区| 亚洲小视频在线| 色偷偷偷综合中文字幕;dd| 精品美女久久久久久免费| 国产精品福利在线观看网址| 欧美三级xxx| 精品久久久精品| 亚洲第一页中文字幕| 一区二区日韩精品| 欧美精品激情在线观看| 在线成人中文字幕| 久久人人爽人人爽人人片av高清| 日韩欧美亚洲一二三区| 亚洲人a成www在线影院| 欧美国产精品人人做人人爱| 久久精品成人一区二区三区| 中文字幕亚洲综合久久筱田步美| 欧美日韩在线另类| 亚洲999一在线观看www| 成人欧美一区二区三区在线| 69av在线播放| 亚洲香蕉成人av网站在线观看| 亚洲国产精品成人一区二区| 成人免费福利视频| 国产精品福利无圣光在线一区| 91亚洲国产成人精品性色| 欧美另类在线观看| 国产精品嫩草影院一区二区| 国产一区私人高清影院| 青青精品视频播放| 日韩大陆毛片av| 日本亚洲精品在线观看| 久久久久久网站|