入口脚本是负责启动一个请求处理周期。用户访问只是通过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(); ?>
以下是控制台应用程序的入口脚本 -
#!/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文件时生效。