<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                <article><h1>Laravel 的 Facades 介紹</h1><ul><li><a href="#introduction">簡介</a></li><li><a href="#when-to-use-facades">何時使用 Facades</a><ul><li><a href="#facades-vs-dependency-injection">Facades Vs. 依賴注入</a></li><li><a href="#facades-vs-helper-functions">Facades Vs. 輔助函數</a></li></ul></li><li><a href="#how-facades-work">Facades 工作原理</a></li><li><a href="#facade-class-reference">Facade 類參考</a></li></ul><p><a name="introduction"></a></p><h2><a href="#introduction">簡介</a></h2><p>Facades(讀音:/f??s?d/ )為應用程序的 <a href="/docs/5.4/container">服務容器</a> 中可用的類提供了一個「靜態」接口。Laravel 自帶了很多 facades ,幾乎可以用來訪問到 Laravel 中所有的服務。Laravel facades 實際上是服務容器中那些底層類的「靜態代理」,相比于傳統的靜態方法, facades 在提供了簡潔且豐富的語法同時,還帶來了更好的可測試性和擴展性。</p><p>所有的 Laravel facades 都需要定義在命名空間 <code class=" language-php">Illuminate\<span class="token package">Support<span class="token punctuation">\</span>Facades</span></code> 下。所以,我們可以容易地向下面這樣調用 facade :</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Support<span class="token punctuation">\</span>Facades<span class="token punctuation">\</span>Cache</span><span class="token punctuation">;</span> <span class="token scope">Route<span class="token punctuation">::</span></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'/cache'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token scope">Cache<span class="token punctuation">::</span></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'key'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>在 Laravel 的文檔中,很多示例代碼都是使用 facades 來演示框架的各種特性的。</p><p><a name="when-to-use-facades"></a></p><h2><a href="#when-to-use-facades">何時使用 Facades</a></h2><p>Facades 有很多好處,它為我們使用 Laravel 的各種功能提供了簡單,易記的語法,讓你不需要記住長長的類名來實現依賴注入和手動配置。還有,因為它們對于PHP動態方法的獨特用法,測試起來非常容易。</p><p>然而,在使用 facades 時,有些地方還需要特別注意。使用 facades 最主要的風險就是會引起類作用范圍的膨脹。因為 facades 使用起來非常簡單而且不需要注入,我們會不經意的在單個類中大量使用。它不會像使用依賴注入那樣,使用的類越多,構造方法會越長,在視覺上就會引起注意,提醒你這個類有點龐大了。所以在使用 facades 的時候,要特別注意控制好類的大小,讓類的作用范圍保持短小。</p><blockquote class="has-icon tip"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="56.6px" height="87.5px" viewBox="0 0 56.6 87.5" enable-background="new 0 0 56.6 87.5" xml:space="preserve"><path fill="#FFFFFF" d="M28.7 64.5c-1.4 0-2.5-1.1-2.5-2.5v-5.7 -5V41c0-1.4 1.1-2.5 2.5-2.5s2.5 1.1 2.5 2.5v10.1 5 5.8C31.2 63.4 30.1 64.5 28.7 64.5zM26.4 0.1C11.9 1 0.3 13.1 0 27.7c-0.1 7.9 3 15.2 8.2 20.4 0.5 0.5 0.8 1 1 1.7l3.1 13.1c0.3 1.1 1.3 1.9 2.4 1.9 0.3 0 0.7-0.1 1.1-0.2 1.1-0.5 1.6-1.8 1.4-3l-2-8.4 -0.4-1.8c-0.7-2.9-2-5.7-4-8 -1-1.2-2-2.5-2.7-3.9C5.8 35.3 4.7 30.3 5.4 25 6.7 14.5 15.2 6.3 25.6 5.1c13.9-1.5 25.8 9.4 25.8 23 0 4.1-1.1 7.9-2.9 11.2 -0.8 1.4-1.7 2.7-2.7 3.9 -2 2.3-3.3 5-4 8L41.4 53l-2 8.4c-0.3 1.2 0.3 2.5 1.4 3 0.3 0.2 0.7 0.2 1.1 0.2 1.1 0 2.2-0.8 2.4-1.9l3.1-13.1c0.2-0.6 0.5-1.2 1-1.7 5-5.1 8.2-12.1 8.2-19.8C56.4 12 42.8-1 26.4 0.1zM43.7 69.6c0 0.5-0.1 0.9-0.3 1.3 -0.4 0.8-0.7 1.6-0.9 2.5 -0.7 3-2 8.6-2 8.6 -1.3 3.2-4.4 5.5-7.9 5.5h-4.1H28h-0.5 -3.6c-3.5 0-6.7-2.4-7.9-5.7l-0.1-0.4 -1.8-7.8c-0.4-1.1-0.8-2.1-1.2-3.1 -0.1-0.3-0.2-0.5-0.2-0.9 0.1-1.3 1.3-2.1 2.6-2.1H41C42.4 67.5 43.6 68.2 43.7 69.6zM37.7 72.5H26.9c-4.2 0-7.2 3.9-6.3 7.9 0.6 1.3 1.8 2.1 3.2 2.1h4.1 0.5 0.5 3.6c1.4 0 2.7-0.8 3.2-2.1L37.7 72.5z"></path></svg></span></div> 在開發與 Laravel 交互的第三方擴展包時,最好是在包中通過注入 <a href="/docs/5.4/contracts">Laravel contracts</a> ,而不是在包中通過 facades 來使用 Laravel 的類。因為擴展包不是在 Laravel 內部使用的,無法使用 Laravel's facade 的測試輔助函數。</p></blockquote><p><a name="facades-vs-dependency-injection"></a></p><h3>Facades Vs. 依賴注入</h3><p>依賴注入的一個主要的好處是可以切換注入類的具體實現。這在測試的時候很有用,因為你可以注入一個 mock 或者 stub ,并且對在 stub 中被調用的各種方法進行斷言。</p><p>通常,靜態方法是不可以被 mock 或者 stub 。但是,因為 facades 調用的是對象的動態方法,我們可以像測試注入類的實例一樣測試 facades ,例如,像下面的路由:</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Support<span class="token punctuation">\</span>Facades<span class="token punctuation">\</span>Cache</span><span class="token punctuation">;</span> <span class="token scope">Route<span class="token punctuation">::</span></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'/cache'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token scope">Cache<span class="token punctuation">::</span></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'key'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>我們可以用下面的測試代碼去驗證 <code class=" language-php"><span class="token scope">Cache<span class="token punctuation">::</span></span>get</code> 方法是否被調用,當傳入預期的參數時。</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Support<span class="token punctuation">\</span>Facades<span class="token punctuation">\</span>Cache</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * 一個基礎功能的測試用例。 * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">testBasicExample<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token scope">Cache<span class="token punctuation">::</span></span><span class="token function">shouldReceive<span class="token punctuation">(</span></span><span class="token string">'get'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">with<span class="token punctuation">(</span></span><span class="token string">'key'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">andReturn<span class="token punctuation">(</span></span><span class="token string">'value'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token this">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">visit<span class="token punctuation">(</span></span><span class="token string">'/cache'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">see<span class="token punctuation">(</span></span><span class="token string">'value'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre><p><a name="facades-vs-helper-functions"></a></p><h3>Facades Vs. 輔助函數</h3><p>除了 facades , Laravel 包含一些「輔助函數」來實現一些常用的功能,比如生成視圖,觸發事件,調度任務或者發送 HTTP 響應。許多輔助函數的功能和對應的 facades 一樣。例如,下面這個 facade 和輔助函數的作用是一樣的:</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">return</span> <span class="token scope">View<span class="token punctuation">::</span></span><span class="token function">make<span class="token punctuation">(</span></span><span class="token string">'profile'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">view<span class="token punctuation">(</span></span><span class="token string">'profile'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>這里的 facades 和輔助函數是沒有任何區別的。當你使用輔助函數時,你依然可以向使用對應的 facade 一樣測試他們。例如,下面的路由:</p><pre class=" language-php"><code class=" language-php"><span class="token scope">Route<span class="token punctuation">::</span></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'/cache'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">cache<span class="token punctuation">(</span></span><span class="token string">'key'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>在底層,輔助函數 <code class=" language-php">cache</code> 實際是調用 <code class=" language-php">Cache</code> facade 中的 <code class=" language-php">get</code> 方法。因此,盡管我們是在使用輔助函數,我們依然可以用下面的測試代碼來驗證是否方法被正確調用,在傳入預期的參數時:</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Support<span class="token punctuation">\</span>Facades<span class="token punctuation">\</span>Cache</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * 一個基礎功能的測試用例。 * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">testBasicExample<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token scope">Cache<span class="token punctuation">::</span></span><span class="token function">shouldReceive<span class="token punctuation">(</span></span><span class="token string">'get'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">with<span class="token punctuation">(</span></span><span class="token string">'key'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">andReturn<span class="token punctuation">(</span></span><span class="token string">'value'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token this">$this</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">visit<span class="token punctuation">(</span></span><span class="token string">'/cache'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">see<span class="token punctuation">(</span></span><span class="token string">'value'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span></code></pre><p><a name="how-facades-work"></a></p><h2><a href="#how-facades-work">Facades 工作原理</a></h2><p>在 Laravel 應用中,一個 facade 就是一個提供訪問容器中對象的類。其中核心的部件就是 <code class=" language-php">Facade</code> 類。不管是 Laravel 自帶的 Facades ,還是用戶自定義的 Facades ,都繼承自 <code class=" language-php">Illuminate\<span class="token package">Support<span class="token punctuation">\</span>Facades<span class="token punctuation">\</span>Facade</span></code> 類。</p><p><code class=" language-php">Facade</code> 基類使用 <code class=" language-php"><span class="token function">__callStatic<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code> 魔術方法在你的 facades 中延遲調用容器中對應對象的方法,在下面的例子中,調用了 Laravel 的緩存系統。在代碼里,我們可能認為是 <code class=" language-php">Cache</code> 類中的靜態方法 <code class=" language-php">get</code> 被調用了:</p><pre class=" language-php"><code class=" language-php"><span class="token delimiter">&lt;?php</span> <span class="token keyword">namespace</span> <span class="token package">App<span class="token punctuation">\</span>Http<span class="token punctuation">\</span>Controllers</span><span class="token punctuation">;</span></code></pre><p>&nbsp; &nbsp;use Illuminate\Support\Facades\Cache; &nbsp; &nbsp;use App\Http\Controllers\Controller;</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">class</span> <span class="token class-name">UserController</span> <span class="token keyword">extends</span> <span class="token class-name">Controller</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">/** * 顯示給定用戶的大體信息。 * * @param int $id * @return Response */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">showProfile<span class="token punctuation">(</span></span><span class="token variable">$id</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$user</span> <span class="token operator">=</span> <span class="token scope">Cache<span class="token punctuation">::</span></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'user:'</span><span class="token punctuation">.</span><span class="token variable">$id</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">view<span class="token punctuation">(</span></span><span class="token string">'profile'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'user'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token variable">$user</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre><p>注意在代碼的最上面,我們導入的是 <code class=" language-php">Cache</code> facade 。這個 facade 其實是我們獲取底層 <code class=" language-php">Illuminate\<span class="token package">Contracts<span class="token punctuation">\</span>Cache<span class="token punctuation">\</span>Factory</span></code> 接口實現的一個代理。我們通過這個 facade 調用的任何方法,都會被傳遞到 Laravel 緩存服務的底層實例中。</p><p>如果我們看一下 <code class=" language-php">Illuminate\<span class="token package">Support<span class="token punctuation">\</span>Facades<span class="token punctuation">\</span>Cache</span></code> 這個類,你會發現類中根本沒有 <code class=" language-php">get</code> 這個靜態方法:</p><pre class=" language-php"><code class=" language-php"><span class="token keyword">class</span> <span class="token class-name">Cache</span> <span class="token keyword">extends</span> <span class="token class-name">Facade</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">/** * 獲取組件在容器中注冊的名稱。 * * @return string */</span> <span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">function</span> <span class="token function">getFacadeAccessor<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token string">'cache'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre><p>其實, <code class=" language-php">Cache</code> facade 是繼承了 <code class=" language-php">Facade</code> 基類,并且定義了 <code class=" language-php"><span class="token function">getFacadeAccessor<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code> 方法。這個方法的作用是返回服務容器中對應名字的綁定內容。當用戶調用 <code class=" language-php">Cache</code> facade 中的任何靜態方法時, Laravel 會解析到服務容器中綁定的鍵值為 <code class=" language-php">cache</code> 實例對象,并調用這個對象對應的方法(在這個例子中就是 <code class=" language-php">get</code> 方法)。</p><p><a name="facade-class-reference"></a></p><h2><a href="#facade-class-reference">Facade 類參考</a></h2><p>在下面你可以找到每個 facade 類及其對應的底層類。這是一個查找給定 facade 類 API 文檔的有用工具。 也列出了綁定在 <a href="/docs/5.4/container">服務容器</a> 中 facade 類對應的可用鍵值。</p><table><thead><tr><th>Facade</th><th>Class</th><th>Service Container Binding</th></tr></thead><tbody><tr><td>App</td><td><a href="https://laravel.com/api/5.4/Illuminate/Foundation/Application.html">Illuminate\Foundation\Application</a></td><td><code class=" language-php">app</code></td></tr><tr><td>Artisan</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Console/Kernel.html">Illuminate\Contracts\Console\Kernel</a></td><td><code class=" language-php">artisan</code></td></tr><tr><td>Auth</td><td><a href="https://laravel.com/api/5.4/Illuminate/Auth/AuthManager.html">Illuminate\Auth\AuthManager</a></td><td><code class=" language-php">auth</code></td></tr><tr><td>Blade</td><td><a href="https://laravel.com/api/5.4/Illuminate/View/Compilers/BladeCompiler.html">Illuminate\View\Compilers\BladeCompiler</a></td><td><code class=" language-php">blade<span class="token punctuation">.</span>compiler</code></td></tr><tr><td>Bus</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Bus/Dispatcher.html">Illuminate\Contracts\Bus\Dispatcher</a></td><td>&nbsp;</td></tr><tr><td>Cache</td><td><a href="https://laravel.com/api/5.4/Illuminate/Cache/Repository.html">Illuminate\Cache\Repository</a></td><td><code class=" language-php">cache</code></td></tr><tr><td>Config</td><td><a href="https://laravel.com/api/5.4/Illuminate/Config/Repository.html">Illuminate\Config\Repository</a></td><td><code class=" language-php">config</code></td></tr><tr><td>Cookie</td><td><a href="https://laravel.com/api/5.4/Illuminate/Cookie/CookieJar.html">Illuminate\Cookie\CookieJar</a></td><td><code class=" language-php">cookie</code></td></tr><tr><td>Crypt</td><td><a href="https://laravel.com/api/5.4/Illuminate/Encryption/Encrypter.html">Illuminate\Encryption\Encrypter</a></td><td><code class=" language-php">encrypter</code></td></tr><tr><td>DB</td><td><a href="https://laravel.com/api/5.4/Illuminate/Database/DatabaseManager.html">Illuminate\Database\DatabaseManager</a></td><td><code class=" language-php">db</code></td></tr><tr><td>DB (Instance)</td><td><a href="https://laravel.com/api/5.4/Illuminate/Database/Connection.html">Illuminate\Database\Connection</a></td><td>&nbsp;</td></tr><tr><td>Event</td><td><a href="https://laravel.com/api/5.4/Illuminate/Events/Dispatcher.html">Illuminate\Events\Dispatcher</a></td><td><code class=" language-php">events</code></td></tr><tr><td>File</td><td><a href="https://laravel.com/api/5.4/Illuminate/Filesystem/Filesystem.html">Illuminate\Filesystem\Filesystem</a></td><td><code class=" language-php">files</code></td></tr><tr><td>Gate</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Auth/Access/Gate.html">Illuminate\Contracts\Auth\Access\Gate</a></td><td>&nbsp;</td></tr><tr><td>Hash</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Hashing/Hasher.html">Illuminate\Contracts\Hashing\Hasher</a></td><td><code class=" language-php">hash</code></td></tr><tr><td>Lang</td><td><a href="https://laravel.com/api/5.4/Illuminate/Translation/Translator.html">Illuminate\Translation\Translator</a></td><td><code class=" language-php">translator</code></td></tr><tr><td>Log</td><td><a href="https://laravel.com/api/5.4/Illuminate/Log/Writer.html">Illuminate\Log\Writer</a></td><td><code class=" language-php">log</code></td></tr><tr><td>Mail</td><td><a href="https://laravel.com/api/5.4/Illuminate/Mail/Mailer.html">Illuminate\Mail\Mailer</a></td><td><code class=" language-php">mailer</code></td></tr><tr><td>Notification</td><td><a href="https://laravel.com/api/5.4/Illuminate/Notifications/ChannelManager.html">Illuminate\Notifications\ChannelManager</a></td><td>&nbsp;</td></tr><tr><td>Password</td><td><a href="https://laravel.com/api/5.4/Illuminate/Auth/Passwords/PasswordBrokerManager.html">Illuminate\Auth\Passwords\PasswordBrokerManager</a></td><td><code class=" language-php">auth<span class="token punctuation">.</span>password</code></td></tr><tr><td>Queue</td><td><a href="https://laravel.com/api/5.4/Illuminate/Queue/QueueManager.html">Illuminate\Queue\QueueManager</a></td><td><code class=" language-php">queue</code></td></tr><tr><td>Queue (Instance)</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Queue/Queue.html">Illuminate\Contracts\Queue\Queue</a></td><td><code class=" language-php">queue</code></td></tr><tr><td>Queue (Base Class)</td><td><a href="https://laravel.com/api/5.4/Illuminate/Queue/Queue.html">Illuminate\Queue\Queue</a></td><td>&nbsp;</td></tr><tr><td>Redirect</td><td><a href="https://laravel.com/api/5.4/Illuminate/Routing/Redirector.html">Illuminate\Routing\Redirector</a></td><td><code class=" language-php">redirect</code></td></tr><tr><td>Redis</td><td><a href="https://laravel.com/api/5.4/Illuminate/Redis/Database.html">Illuminate\Redis\Database</a></td><td><code class=" language-php">redis</code></td></tr><tr><td>Request</td><td><a href="https://laravel.com/api/5.4/Illuminate/Http/Request.html">Illuminate\Http\Request</a></td><td><code class=" language-php">request</code></td></tr><tr><td>Response</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Routing/ResponseFactory.html">Illuminate\Contracts\Routing\ResponseFactory</a></td><td>&nbsp;</td></tr><tr><td>Route</td><td><a href="https://laravel.com/api/5.4/Illuminate/Routing/Router.html">Illuminate\Routing\Router</a></td><td><code class=" language-php">router</code></td></tr><tr><td>Schema</td><td><a href="https://laravel.com/api/5.4/Illuminate/Database/Schema/Blueprint.html">Illuminate\Database\Schema\Blueprint</a></td><td>&nbsp;</td></tr><tr><td>Session</td><td><a href="https://laravel.com/api/5.4/Illuminate/Session/SessionManager.html">Illuminate\Session\SessionManager</a></td><td><code class=" language-php">session</code></td></tr><tr><td>Session (Instance)</td><td><a href="https://laravel.com/api/5.4/Illuminate/Session/Store.html">Illuminate\Session\Store</a></td><td>&nbsp;</td></tr><tr><td>Storage</td><td><a href="https://laravel.com/api/5.4/Illuminate/Contracts/Filesystem/Factory.html">Illuminate\Contracts\Filesystem\Factory</a></td><td><code class=" language-php">filesystem</code></td></tr><tr><td>URL</td><td><a href="https://laravel.com/api/5.4/Illuminate/Routing/UrlGenerator.html">Illuminate\Routing\UrlGenerator</a></td><td><code class=" language-php">url</code></td></tr><tr><td>Validator</td><td><a href="https://laravel.com/api/5.4/Illuminate/Validation/Factory.html">Illuminate\Validation\Factory</a></td><td><code class=" language-php">validator</code></td></tr><tr><td>Validator (Instance)</td><td><a href="https://laravel.com/api/5.4/Illuminate/Validation/Validator.html">Illuminate\Validation\Validator</a></td><td>&nbsp;</td></tr><tr><td>View</td><td><a href="https://laravel.com/api/5.4/Illuminate/View/Factory.html">Illuminate\View\Factory</a></td><td><code class=" language-php">view</code></td></tr><tr><td>View (Instance)</td><td><a href="https://laravel.com/api/5.4/Illuminate/View/View.html">Illuminate\View\View</a></td><td>&nbsp;</td></tr></tbody></table></article>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看