初始化和啟動程式概述
若要執行Commerce應用程式,請在pub/index.php中實作下列動作:
- 包含app/bootstrap.php,它會執行必要的初始化常式,例如錯誤處理、初始化自動載入器、設定設定檔選項,以及設定預設時區。
- 建立\Magento\Framework\App\Bootstrap.php 的執行個體
- 建立Commerce應用程式執行個體: \Magento\Framework\AppInterface
- 執行Commerce
Bootstrap執行邏輯
啟動程式物件使用下列演演算法來執行Commerce應用程式:
-
初始化錯誤處理常式。
-
建立隨處使用且受環境影響的物件管理員和基本共用服務。 環境引數會適當地插入這些物件中。
-
判斷維護模式是 未啟用,否則會終止。
-
判斷是否已安裝Commerce應用程式;否則,會終止。
-
啟動Commerce應用程式。
應用程式啟動期間任何未攔截到的例外狀況,都會自動以
catchException()
方法傳回Commerce,您可用來處理此例外狀況。 後者必須傳回true
或false
:- 若
true
: Commerce已成功處理例外狀況。 無需執行任何其他操作。 - 如果
false
: (或任何其他空白結果) Commerce未處理例外狀況。 啟動程式物件會執行預設的例外狀況處理子常式。
- 若
-
傳送應用程式物件所提供的回應。
note info INFO 已安裝Commerce應用程式且未處於維護模式的判斷是 \Magento\Framework\App\Bootstrap
類別的預設行為。 建立啟動程式物件時,您可以使用進入點指令碼來修改它。修改啟動程式物件的進入點指令碼範例:
code language-php <?php use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false $params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true $bootstrap = Bootstrap::create(BP, $params); /** @var \Magento\Framework\App\Http $app */ $app = $bootstrap->createApplication('Magento\Framework\App\Http'); $bootstrap->run($app);
預設例外狀況處理
啟動程式物件會指定Commerce應用程式如何處理未攔截到的例外狀況,如下所示:
- 在開發人員模式中,依原樣顯示例外狀況。
- 在任何其他模式中,會嘗試記錄例外狀況並顯示一般錯誤訊息。
- 終止Commerce,錯誤碼為
1
進入點應用程式
我們有下列入口點應用程式(亦即Commerce定義的應用程式,由網頁伺服器用來作為目錄索引):
HTTP進入點
\Magento\Framework\App\Http的運作方式如下:
-
決定應用程式區域。
-
啟動前端控制器和路由系統,以尋找並執行控制器動作。
-
使用HTTP回應物件來傳回從控制器動作取得的結果。
-
錯誤處理(按照以下優先順序):
-
如果您使用開發人員模式:
- 如果未安裝Commerce應用程式,請重新導向至安裝精靈。
- 如果已安裝Commerce應用程式,會顯示錯誤和HTTP狀態碼500 (內部伺服器錯誤)。
-
如果Commerce應用程式處於維護模式,會顯示使用者易記的「無法使用服務」登陸頁面,其中的HTTP狀態碼為503 (無法使用服務)。
-
如果Commerce應用程式 未安裝,請重新導向至安裝精靈。
-
如果工作階段無效,請重新導向至首頁。
-
如果有任何其他應用程式初始化錯誤,請顯示「找不到頁面」頁面(使用者易記的HTTP狀態碼為404 (找不到))。
-
發生任何其他錯誤時,顯示包含HTTP回應503的使用者易記的「服務無法使用」頁面,並產生錯誤報告以在頁面上顯示其ID。
-
靜態資源進入點
\Magento\Framework\App\StaticResource是用於擷取靜態資源(例如CSS、JavaScript和影像)的應用程式。 它會延遲對靜態資源的所有動作,直到請求資源為止。
<your Commerce install dir>/pub/static
目錄中。在預設或開發人員模式中,系統會根據適當.htaccess
所指定的重寫規則,將不存在的靜態資源要求重新導向至靜態進入點。
當請求被重新導向到進入點時,Commerce應用程式會根據擷取的引數剖析請求的URL並尋找請求的資源。
媒體資源進入點
Magento\MediaStorage\App\Media會從資料庫擷取媒體資源(亦即任何上傳至媒體儲存空間的檔案)。 只要將資料庫設定為媒體儲存體,就會使用它。
\Magento\Core\App\Media
嘗試在設定的資料庫儲存空間中尋找媒體檔案,並將其寫入pub/static
目錄,然後傳回其內容。 發生錯誤時,它會在沒有內容的標頭中傳回HTTP 404 (找不到)狀態代碼。