Yii-entry-scripts
提供:Dev Guides
Yii-エントリースクリプト
エントリスクリプトは、リクエスト処理サイクルの開始を担当します。 これらは、ユーザーがアクセスできるPHPスクリプトです。
次の図は、アプリケーションの構造を示しています-
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();
?>
以下は、 console アプリケーションのエントリスクリプトです-
#!/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定数によってサポートされている3つがあります-
- YII_DEBUG -デバッグモードであるかどうかを定義します。 trueに設定すると、より多くのログデータと詳細なエラーコールスタックが表示されます。
- YII_ENV -環境モードを定義します。 デフォルト値はprodです。 利用可能な値は、prod、dev、およびtestです。 これらは、たとえば、異なるDB接続(ローカルおよびリモート)または他の値を定義するために構成ファイルで使用されます。
- 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ファイルが含まれている場合に有効になるように、グローバルスクリプトはエントリスクリプトの先頭で定義する必要があります。