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

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

laravel5.1 源碼閱讀

2019-11-11 04:21:18
字體:
來源:轉載
供稿:網友

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
亚洲国产成人精品女人久久久| 久久久精品免费视频| 88国产精品欧美一区二区三区| 国产精品网站视频| 国产又爽又黄的激情精品视频| 欧美精品在线播放| 日本一本a高清免费不卡| 欧美日韩中文字幕在线视频| 久久中文精品视频| 精品国产一区二区在线| 91国产高清在线| 97精品在线观看| 在线视频中文亚洲| 欧美激情精品久久久久久免费印度| 国产精品久久久久久亚洲调教| 不卡伊人av在线播放| 色先锋久久影院av| 亚洲国产精品电影| 一色桃子一区二区| 成人h视频在线观看播放| 北条麻妃久久精品| 在线视频中文亚洲| 隔壁老王国产在线精品| 国产精品久久久久久久久久久新郎| 国产精品永久免费在线| 亚洲男人天堂手机在线| 中文字幕久久精品| 国产一区二中文字幕在线看| 国产一区二区三区高清在线观看| 亚洲成av人乱码色午夜| 亚洲一区美女视频在线观看免费| 中文字幕欧美精品日韩中文字幕| 法国裸体一区二区| 久久久成人精品视频| 中文字幕日韩在线观看| 国产精品久久久久久久久久久久| 日韩免费在线视频| 亚洲国产毛片完整版| 欧美视频免费在线| 激情久久av一区av二区av三区| 最近2019中文字幕一页二页| 国产精品av电影| 国产成人久久精品| 欧美中文字幕第一页| 久久露脸国产精品| 国产精品丝袜久久久久久高清| 欧美日韩色婷婷| 国产精品91久久久| 国产97在线|亚洲| 精品日本高清在线播放| 国产91久久婷婷一区二区| 日韩在线一区二区三区免费视频| 精品国产乱码久久久久久虫虫漫画| 精品国产91久久久| 日韩美女在线观看| 国产精品高潮粉嫩av| 亚洲国产成人一区| 日韩精品视频观看| 日韩欧美在线视频免费观看| 热久久免费国产视频| 97国产一区二区精品久久呦| 亚洲国产精品视频在线观看| 亚洲男人的天堂在线| 日韩二区三区在线| 亚洲一区二区三区777| 欧美成人全部免费| 亚洲人精品午夜在线观看| 97视频在线观看免费| 欧美国产日韩一区二区三区| 亚洲第一男人天堂| 欧美亚洲另类激情另类| 国产91精品高潮白浆喷水| 亚洲欧洲日产国产网站| 性欧美xxxx交| 欧美激情视频网站| 亚洲国产日韩欧美在线99| www.国产一区| 亚洲国产欧美精品| www.欧美精品一二三区| 久久亚洲春色中文字幕| 国产精品久久久999| 欧美一区第一页| 中文字幕欧美亚洲| 色无极亚洲影院| 欧美老女人www| 国产剧情久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 国产日韩精品在线播放| 国产精品你懂得| 国产精品自产拍在线观看| 91干在线观看| 国产精品高精视频免费| 国产欧美一区二区| xvideos成人免费中文版| 中文字幕久精品免费视频| 亚洲精品国产精品国产自| 欧美亚洲国产精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久视频在线直播| 亚洲第一偷拍网| 亚洲精品中文字幕有码专区| 日韩av一区二区在线观看| 中文字幕国产亚洲| 91影视免费在线观看| 欧美日产国产成人免费图片| 97人洗澡人人免费公开视频碰碰碰| 性视频1819p久久| 国产精品久久久久久av福利| 日韩精品在线视频观看| 国产精品久久久久99| 欧美大奶子在线| 日韩欧美a级成人黄色| 国产suv精品一区二区三区88区| 自拍视频国产精品| 国产69精品99久久久久久宅男| www.久久久久| 国内精品国产三级国产在线专| 亚洲第一精品久久忘忧草社区| 日韩精品福利在线| 日韩大陆欧美高清视频区| 国产九九精品视频| 精品少妇一区二区30p| 中文字幕九色91在线| 亚洲欧美国产一区二区三区| 在线精品视频视频中文字幕| 欧美成人免费一级人片100| 久久综合88中文色鬼| 色综合影院在线| 成人综合网网址| 成人黄色免费在线观看| 久久97精品久久久久久久不卡| 中文字幕久精品免费视频| 国产亚洲精品一区二555| 亚洲精品中文字幕有码专区| 国产精品扒开腿做爽爽爽的视频| 亚洲成人中文字幕| 98视频在线噜噜噜国产| 欧美裸体视频网站| 亚洲精品电影在线观看| 欧美成人激情视频| 久久久免费高清电视剧观看| 日韩av在线导航| 97视频在线观看播放| 97在线免费视频| 人人澡人人澡人人看欧美| 欧美亚洲国产日韩2020| 日韩电影免费在线观看| 97视频免费观看| 亚洲欧洲中文天堂| 国产日韩欧美日韩大片| 亚洲国产欧美在线成人app| 北条麻妃在线一区二区| 狠狠干狠狠久久| 超碰91人人草人人干| 欧美精品第一页在线播放| 欧美精品18videos性欧美| 日韩国产精品视频| 国产精品国产三级国产aⅴ9色| 亚洲综合中文字幕68页| 日韩在线观看电影| 久久久久国色av免费观看性色| 俺去啦;欧美日韩| 538国产精品视频一区二区| 久久久亚洲精品视频|