laravel 中關於Request facades的一個問題

來源:互聯網
上載者:User
看了一些laravel中facades的一些文檔,大致有些瞭解,但有一點問題想請教大家

app.php的aliasse中

'Request'   => 'Illuminate\Support\Facades\Request',

我是這樣理解的,相當於運行了vendor/laravel/framework/src/Illuminate/Support/Facades/Request.php,主要語句就是其中的一句

protected static function getFacadeAccessor() { return 'request'; }

要使這個facades起作用,還要綁定到服務提供者,也就是要執行App::bind()這個函數,但查了一遍代碼,沒發現哪裡出現過。

請問這個facades綁定到服務提供者的代碼在哪裡,或者說是其它的實現方式。謝謝!

回複內容:

看了一些laravel中facades的一些文檔,大致有些瞭解,但有一點問題想請教大家

app.php的aliasse中

'Request'   => 'Illuminate\Support\Facades\Request',

我是這樣理解的,相當於運行了vendor/laravel/framework/src/Illuminate/Support/Facades/Request.php,主要語句就是其中的一句

protected static function getFacadeAccessor() { return 'request'; }

要使這個facades起作用,還要綁定到服務提供者,也就是要執行App::bind()這個函數,但查了一遍代碼,沒發現哪裡出現過。

請問這個facades綁定到服務提供者的代碼在哪裡,或者說是其它的實現方式。謝謝!

相關代碼都在同一個檔案夾下的Facade類裡面
粗看了一下 應該是resolveFacadeInstance把全域容器中的變數綁定到這裡的作為對象緩衝的靜態成員resolvedInstance中的
__callStatic->getFacadeRoot->resolveFacadeInstance&getFacadeAccessor

是不是在public/index.php中直接使用了?

Illuminate/Foundation/Application.php

Facades 只是提供個快速存取的代理,註冊並不在這裡。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.