<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                <article><h1>Laravel 的請求生命周期</h1><ul><li><a href="#introduction">介紹</a></li><li><a href="#lifecycle-overview">請求生命周期概述</a></li><li><a href="#focus-on-service-providers">聚焦服務提供者</a></li></ul><p><a name="introduction"></a></p><h2><a href="#introduction">介紹</a></h2><p>使用「現實世界」中的任何工具時,如果理解這個工具的運作原理,那么你會更加得心應手的使用這個工具。應用開發也是這樣。當你明白你的開發工具如何運行的,你就會對它們的使用游刃有余。</p><p>這篇文檔的目的是讓你更好的理解 Laravel 框架如何進行工作及它的工作原理。通過對框架進行全面的了解,一切都不會那么「神奇」,也將會讓你更有自信的構建你的應用。如果你不能理解所有的這些術語,也不要喪失信心!只要對現在提到的東西有個基本概念,隨著對本文檔和其他章節的不斷探索,你對它們的理解會不斷提升。</p><p><a name="lifecycle-overview"></a></p><h2><a href="#lifecycle-overview">生命周期概述</a></h2><h3>第一件事</h3><p>一個 Laravel 應用的所有請求的入口都是 <code class=" language-php"><span class="token keyword">public</span><span class="token operator">/</span>index<span class="token punctuation">.</span>php</code> 文件。 通過網頁服務器 (Apache / Nginx) 所有請求都會導向這個文件。 <code class=" language-php">index<span class="token punctuation">.</span>php</code> 文件沒有太多的代碼,只是加載框架其他部分的一個入口。</p><p><code class=" language-php">index<span class="token punctuation">.</span>php</code> 文件載入 Composer 生成的自動加載器定義,并從 <code class=" language-php">bootstrap<span class="token operator">/</span>app<span class="token punctuation">.</span>php</code> 文件獲取到 Laravel 應用實例。Laravel 的第一個動作就是創建一個自身應用實例 / <a href="/docs/5.4/container">服務容器</a>。</p><h3>HTTP / Console 內核</h3><p>接下來,傳入的請求會被發送給 HTTP 內核或者 console 內核,這根據進入應用的請求的類型而定。這兩個內核服務是所有請求都經過的中樞。讓我們現在只關注位于 <code class=" language-php">app<span class="token operator">/</span>Http<span class="token operator">/</span>Kernel<span class="token punctuation">.</span>php</code> 的 HTTP 內核。</p><p>HTTP 內核繼承自 <code class=" language-php">Illuminate\<span class="token package">Foundation<span class="token punctuation">\</span>Http<span class="token punctuation">\</span>Kernel</span></code> 類,它定義了一個 <code class=" language-php">bootstrappers</code> 數組,數組中的類在請求真正執行前進行前置執行。 這些引導程序配置了錯誤處理,日志記錄,<a href="/docs/5.4/configuration#environment-configuration">檢測應用程序環境</a>,以及其他在請求被處理前需要完成的工作。</p><p>HTTP 內核同時定義了一個 HTTP <a href="/docs/5.4/middleware">中間件</a> 列表,所有的請求必須在處理前通過這些中間件,這些中間件處理 <a href="/docs/5.4/session">HTTP session</a> 的讀寫,判斷應用是否在維護模式, <a href="/docs/5.4/csrf">驗證 CSRF token</a> 等等。</p><p>HTTP 內核的標志性 <code class=" language-php">handle</code> 方法是相當簡單的:接收一個 <code class=" language-php">Request</code> 并返回一個 <code class=" language-php">Response</code>。你可以把內核想成一個代表你應用的大黑盒子。給它喂 HTTP 請求然后它就會吐給你 HTTP 響應。</p><h4>服務提供者</h4><p>在內核引導啟動的過程中最重要的動作之一就是載入 <a href="/docs/5.4/providers">服務提供者</a> 到你的應用。所有的服務提供者都配置在 <code class=" language-php">config<span class="token operator">/</span>app<span class="token punctuation">.</span>php</code> 文件中的 <code class=" language-php">providers</code> 數組中。 首先,所有提供者的 <code class=" language-php">register</code> 方法會被調用,接下來,一旦所有提供者注冊完成,<code class=" language-php">boot</code> 方法將會被調用。</p><p>服務提供者負責引導啟動框架的全部各種組件,例如數據庫、隊列、驗證器以及路由組件。因為這些組件引導和配置了框架的各種功能,所以服務提供者是整個 Laravel 啟動過程中最為重要的部分。</p><h4>分發請求</h4><p>一旦應用完成引導和所有服務提供者都注冊完成,<code class=" language-php">Request</code> 將會移交給路由進行分發。路由將分發請求給一個路由或控制器,同時運行路由指定的中間件。</p><p><a name="focus-on-service-providers"></a></p><h2><a href="#focus-on-service-providers">聚焦服務提供者</a></h2><p>服務提供者是 Laravel 應用的真正關鍵部分,應用實例被創建后,服務提供者就會被注冊完成,并將請求傳遞給應用進行處理,真的就是這么簡單!</p><p>了解 Laravel 是怎樣通過服務提供者構建和引導一個穩定的應用是非常有價值的,當然,應用的默認服務提供者都存放在 <code class=" language-php">app<span class="token operator">/</span>Providers</code> 目錄中。</p><p>在新創建的應用中,<code class=" language-php">AppServiceProvider</code> 文件中方法實現都是空的。這個提供者是你添加應用專屬的引導和服務的最佳位置,當然的,對于大型應用你可能希望創建幾個服務提供者,每個都具有粒度更精細的引導。</p><h2>譯者署名</h2><table><thead><tr><th>用戶名</th><th>頭像</th><th>職能</th><th>簽名</th></tr></thead><tbody><tr><td><a href="https://github.com/dongm2ez">@麥索</a></td><td><img class="avatar-66 rm-style" src="https://avatars3.githubusercontent.com/u/9032795?v=3&amp;s=460?imageView2/1/w/100/h/100"></td><td>翻譯</td><td>Follow me <a href="https://github.com/dongm2ez">@dongm2ez</a> at Github</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>

                              哎呀哎呀视频在线观看