Yii-エントリースクリプト
エントリスクリプトは、要求処理サイクルを開始する責任があります。これらは、ユーザーがアクセスできる単なるPHPスクリプトです。
次の図は、アプリケーションの構造を示しています-
Webアプリケーション(およびコンソールアプリケーション)には、単一のエントリスクリプトがあります。エンドユーザーがエントリスクリプトを要求します。次に、エントリスクリプトは、アプリケーションインスタンスをインスタンス化し、それらにリクエストを転送します。
コンソールアプリケーションのエントリスクリプトは通常、プロジェクトのベースパスに保存され、次の名前が付けられます。 yii.php。Webアプリケーションのエントリスクリプトは、Webアクセス可能なディレクトリに保存する必要があります。よく呼ばれますindex.php。
エントリスクリプトは次のことを行います-
- 定数を定義します。
- Composerオートローダーを登録します。
- Yiiファイルを含めます。
- 構成をロードします。
- アプリケーションインスタンスを作成して構成します。
- 着信要求を処理します。
以下は、のエントリスクリプトです。 basic application テンプレート-
<?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);
}
Note −他のPHPファイルが含まれている場合に有効にするために、グローバル定数はエントリスクリプトの先頭で定義する必要があります。