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

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

laravel5.1 源碼閱讀

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

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
亚洲天堂网站在线观看视频| 欧美中文在线观看国产| 尤物九九久久国产精品的特点| 日韩av资源在线播放| 日韩在线观看免费全| 久久九九热免费视频| 日韩欧美一区二区三区久久| 久久精品最新地址| 亚洲美女久久久| 国产成人精品在线视频| 国产视频综合在线| 日韩在线免费视频| 91啪国产在线| 91在线直播亚洲| 这里只有精品在线播放| 国产精品成人av性教育| 日韩电影第一页| 亚洲伊人第一页| 91经典在线视频| 7777kkkk成人观看| 国产精品视频色| 亚洲高清久久网| 欧美国产日韩视频| 日韩电影中文字幕| 欧洲亚洲在线视频| 91精品国产亚洲| 国产91在线播放九色快色| 精品自拍视频在线观看| 国产精品aaaa| 国产欧美一区二区三区在线| 国产亚洲免费的视频看| 亚洲性生活视频在线观看| 久久69精品久久久久久久电影好| 中文字幕亚洲第一| 亚洲风情亚aⅴ在线发布| 亚洲成人久久一区| 一本大道久久加勒比香蕉| 美日韩精品免费视频| 亚洲最大av网站| 91精品成人久久| 久久久久久一区二区三区| 久久久99免费视频| 国产在线观看一区二区三区| 欧美日本精品在线| 亚洲自拍偷拍网址| 久久久精品久久久| 亚洲福利在线看| 久久精品中文字幕免费mv| 亚洲第一区第一页| 欧美日本中文字幕| 日韩欧美中文第一页| 亚洲人成网7777777国产| 久久久在线视频| 欧美日韩色婷婷| 91精品久久久久久久久青青| 疯狂做受xxxx高潮欧美日本| 精品国偷自产在线| 亚洲精品成人av| 91极品女神在线| 一本色道久久综合狠狠躁篇怎么玩| 米奇精品一区二区三区在线观看| 51色欧美片视频在线观看| 69久久夜色精品国产7777| 97视频免费看| 最近2019年好看中文字幕视频| 精品视频久久久久久| 亚洲精品免费一区二区三区| www.亚洲免费视频| yellow中文字幕久久| 国产美女搞久久| 热门国产精品亚洲第一区在线| 日韩免费在线观看视频| 91夜夜未满十八勿入爽爽影院| 国产成人精品网站| 91精品视频免费看| 亚洲福利视频久久| 国产一区红桃视频| 欧美性猛交xxxx富婆弯腰| 亚洲国产精品久久久久久| 国产亚洲精品美女| 欧美人与性动交| 亚洲精品日韩在线| 久久福利视频网| 国产在线观看一区二区三区| 亚洲欧美福利视频| 2021国产精品视频| 亚洲毛片一区二区| 高清一区二区三区四区五区| 国产精品免费在线免费| 深夜福利日韩在线看| 九九精品在线观看| 日韩免费观看网站| 日韩av电影免费观看高清| 中文字幕精品国产| 欧美日韩精品国产| 91久久夜色精品国产网站| 欧美午夜精品在线| 中文字幕亚洲国产| 欧美另类xxx| 精品国产电影一区| 欧洲午夜精品久久久| 粉嫩av一区二区三区免费野| 91成品人片a无限观看| 国产在线久久久| 欧美日韩在线免费观看| 日韩福利伦理影院免费| 成人免费福利在线| 97成人精品视频在线观看| 91精品久久久久久久久久另类| 在线观看亚洲区| 欧美激情2020午夜免费观看| 性色av一区二区三区红粉影视| 国产欧美精品一区二区| 欧洲美女7788成人免费视频| 55夜色66夜色国产精品视频| 国产精品一区二区av影院萌芽| 国产视频精品一区二区三区| 中文字幕av一区中文字幕天堂| 国产中文字幕91| 国产精品日韩在线观看| 亚洲精品视频在线观看视频| 国产成人av在线播放| 欧美性猛交xxxx富婆弯腰| 国产精品欧美日韩一区二区| 午夜精品福利视频| 亚洲综合中文字幕在线观看| 亚洲最新av在线网站| 久久久99久久精品女同性| 国产一区二区香蕉| 91成人在线播放| 久久久女女女女999久久| 国产成人免费av电影| 日本一区二三区好的精华液| 91美女片黄在线观看游戏| 欧美日韩第一页| 日韩免费观看高清| 日韩在线观看精品| 国产自摸综合网| 日本不卡高字幕在线2019| 欧美壮男野外gaytube| 久久精品国产一区| 亚洲一级黄色av| 色综合色综合久久综合频道88| 亚洲欧洲视频在线| 日韩www在线| 亚洲成色999久久网站| 最新69国产成人精品视频免费| 大胆人体色综合| 亚洲视频在线免费观看| 久久琪琪电影院| 亚洲精品成人久久电影| 欧美孕妇孕交黑巨大网站| 欧美精品在线免费观看| 亚洲精品乱码久久久久久金桔影视| 亚洲视频欧美视频| 91九色视频导航| 日韩天堂在线视频| 亚洲精品美女在线| 成人做爰www免费看视频网站| 不卡av在线网站| 日韩大片在线观看视频| 国产日韩欧美日韩大片| 欧美一级片在线播放| 情事1991在线|