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 instanceapplication = new yii\console\Application(config);
//process requestexitCode = 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文件时生效。