Yii入口指令碼


入口指令碼是負責啟動一個請求處理週期。使用者存取只是通過PHP指令碼。
下圖顯示了一個應用程式的結構 -
Yii入口腳本

Web應用程式(以及控制台應用程式)具有一個單一入口指令碼。終端使用者從入口指令碼發起一個請求。然後,入口指令碼範例化應用範例並將請求轉發給它們。

控制台應用程式入口指令碼通常儲存在一個專案基本路徑並命名為yii.php。Web應用程式入口指令碼必須儲存在Web存取的目錄下。它通常是index.php。

入口指令碼執行以下操作 -
  • 定義常數
  • 註冊 Composer 自動載入
  • 包括 Yii 檔案
  • 載入組態
  • 建立和組態一個應用程式範例
  • 處理傳入的請求
以下是基本的應用程式入口指令碼的模板-
<?php
   //defining global constants
   defined('YII_DEBUG') or define('YII_DEBUG', true);
   defined('YII_ENV') or define('YII_ENV', 'dev');
 
   //register composer autoloader
   require(__DIR__ . '/../vendor/autoload.php');
   //include yii files
   require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
  
   //load application config
   $config = require(__DIR__ . '/../config/web.php');
  
   //create, config, and process reques
   (new yii\web\Application($config))->run();
?>
以下是控制台應用程式的入口指令碼 -
#!/usr/bin/env php
<?php
   /** 
   * Yii console bootstrap file. 
   * @link http://www.yiiframework.com/ 
   * @copyright Copyright (c) 2008 Yii Software LLC 
   * @license http://www.yiiframework.com/license/ 
   */
   //defining global constants
   defined('YII_DEBUG') or define('YII_DEBUG', true);
  
   //register composer autoloader
   require(__DIR__ . '/vendor/autoload.php');
   require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
  
   //load config
   $config = require(__DIR__ . '/config/console.php');
  
   //apply config the application instance 
   $application = new yii\console\Application($config);  

   //process request
   $exitCode = $application->run();
   exit($exitCode);
?>
定義全域性常數最好的地方是入口指令碼。有三個Yii常數被定義-
  • YII_DEBUG ? 定義是否在偵錯模式。如果設定為true,那麼將看到更多的紀錄檔資料和細節錯誤的呼叫堆疊。

  • YII_ENV ? 定義環境模式。預設值是prod。

    可用值為 prod, dev 和 test. 它們在組態檔案中用來定義:例如,一個不同的資料庫連線(本地和遠端)或其它值。

  • YII_ENABLE_ERROR_HANDLER ? 指定是否啟用預設Yii的錯誤處理程式。

定義一個全域性常數,常用下面的程式碼-
//defining global constants 
defined('YII_DEBUG') or define('YII_DEBUG', true); 
which is equivalent to: 
if(!defined('YII_DEBUG')) { 
   define('YII_DEBUG', true); 
} 

註 - 全域性常數應在入口指令碼的開頭定義,以便包含其他PHP檔案時生效。