Yii2学习笔记系列8——Application Structure-Entry Scripts(应用结构之入口脚本)
一 11 四月 2016
Yii2学习笔记系列8——Application Structure-Entry Scripts(应用结构之入口脚本)
入口脚本
入口脚本是应用启动流程中的第一步,一个应用只有一个入口脚本,终端用户的请求通过入口脚本实例化应用并将请求转发到应用。
Yii中Web应用的入口脚本存放在终端用户可以访问的目录下,名为index.php
,当然,我们也可以使用Web服务器定位到其他名称的文件。
Yii中Console应用的入口脚本在应用根目录下,名为yii
(格式为.php文件),该文件需要有执行权限,这样儿用户就可以通过命令./yii <route> [arguments] [options]
来运行Console应用了。
入口脚本主要用来完成以下的工作:
- 定义全局常量;
- 注册Composer自动加载器;
- 包含Yii类文件;
- 加载应用配置;
- 创建并配置一个应用的实例;
- 调用
yii\base\Application::run()
来处理请求。
Web应用
以下是基础应用模板入口脚本的代码:
<?php
// 当部署到生产环境时,注释掉下面的两行
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();
Console应用
以下是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/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/config/console.php');
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
定义常量
入口脚本是定义全局常量的最好的地方,Yii支持以下三个常量:
YII_DEBUG
:标识应用是否运行在调试模式。当处于调试模式下,应用会保留更多的日志信息,如抛出异常,显示详细的错误调用堆栈等等,因此,调试模式主要运用在开发阶段,YII_DEBUG
的默认值是false。YII_ENV
: 指定当前应用的运行环境。有关详情请参照配置部分,YII_ENV
的默认值是'prod',即线上生产环境。YII_ENABLE_ERROR_HANDLER
:用来标识是否启用Yii提供的错误处理,默认为true。
当定义一个常量时,通常使用类似如下的代码来定义:
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
?>
上面的代码就等同于:
<?php
if (!defined('YII_DEBUG')) {
define('YII_DEBUG', true);
}
?>
显然,还是第一段代码更加简洁易懂。常量的定义应该放在入口脚本的最开始部分,这样儿当include其他PHP文件时,常量就可以生效了。
Category: PHP Develop