真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

laravel中aliases別名的原理是什么-創(chuàng)新互聯(lián)

laravel中 aliases別名的原理是什么?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)東勝免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

建立如下文件upload.php,內(nèi)容為

2 建立文件index.php,內(nèi)容為

test();

瀏覽器執(zhí)行index.php,成功輸出結(jié)果123;

可以看到class upload在命名空間test\test2下 但是new upload的時候 并沒有new \test\test2\upload 而是直接new \upload,原因不多說,就是因為函數(shù)class_alias導(dǎo)致的.具體的這個函數(shù)的用法可以參考手冊。這里要補充說明class_alias的第3個參數(shù)默認(rèn)為true,手冊上的意思是Whether to autoload if the original class is not found.是什么意思了,還是通過例子說明 ,把index.php修改如下

test();

可以看到我注釋掉了require('upload.php'),但是代碼還是成功執(zhí)行了。有了上面的例子說明,就能看懂laravel的別名實現(xiàn)機制了.

在laravel中,比方說我需要使用Log類,我們通過use Log; Log::info();就能使用記錄日志了.下面來分析原理

laravel的加載過程這里不分析,中間有一步會執(zhí)行如下這個'Illuminate\Foundation\Bootstrap\RegisterFacades'的bootstrap方法;

class RegisterFacades 
{ 
  public function bootstrap(Application $app) 
  { 
    //......省略...... 
    AliasLoader::getInstance($app->make('config')->get('app.aliases'))->register(); 
  } 
}

$app->make('config')->get('app.aliases')這一步讀取了config文件夾下的app.php的配置文件,這個配置文件里面我們定義了別名列表.

意思就是說如果是需要使用別名 ,必須在配置文件中注冊別名

例如配置文件中有一行配置為'Log' => Illuminate\Support\Facades\Log::class,

繼續(xù)追蹤執(zhí)行流程,代碼會執(zhí)行到這一步

public function load($alias) 
{ 
  if (isset($this->aliases[$alias])) { 
    return class_alias($this->aliases[$alias], $alias); 
  } 
}

到了這里 ,看了之前的原理的人應(yīng)該都明白了,我們new Log類 ,根據(jù)我們的配置'Log' => Illuminate\Support\Facades\Log::class,實際上是調(diào)用的Illuminate\Support\Facades\Log這個類, 可是Illuminate\Support\Facades\Log里并沒有info方法,這是如何實現(xiàn)的了,可以百度facade原理,這里不細說,這里實際上調(diào)用的是是從容器里面獲取到了log對象,那么這個log對象是什么時候注冊到容器里面去的了,

protected $bootstrappers = [ 
  'Illuminate\Foundation\Bootstrap\DetectEnvironment', 
  'Illuminate\Foundation\Bootstrap\LoadConfiguration', 
  'Illuminate\Foundation\Bootstrap\ConfigureLogging', 
  'Illuminate\Foundation\Bootstrap\HandleExceptions', 
  'Illuminate\Foundation\Bootstrap\RegisterFacades', 
  'Illuminate\Foundation\Bootstrap\RegisterProviders', 
  'Illuminate\Foundation\Bootstrap\BootProviders', 
];

關(guān)于laravel中 aliases別名的原理是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


本文名稱:laravel中aliases別名的原理是什么-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/dihpip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部