Yii 框架入口脚本示例分析


Posted in PHP onMay 19, 2020

本文实例讲述了Yii 框架入口脚本。分享给大家供大家参考,具体如下:

入口脚本

入口脚本是应用启动流程中的第一环, 一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。 终端用户的请求通过入口脚本实例化应用并将请求转发到应用。

Web 应用的入口脚本必须放在终端用户能够访问的目录下, 通常命名为 index.php, 也可以使用 Web 服务器能定位到的其他名称。

控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php), 该文件需要有执行权限, 这样用户就能通过命令 ./yii <route> [arguments] [options] 来运行控制台应用。

入口脚本主要完成以下工作:

  • 定义全局常量;
  • 注册 Composer 自动加载器;
  • 包含 Yii 类文件;
  • 加载应用配置;
  • 创建一个应用实例并配置;
  • 调用 yii\base\Application::run() 来处理请求。

Web 应用

以下是基础应用模版入口脚本的代码:

<?php
 
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
 
// 注册 Composer 自动加载器
require __DIR__ . '/../vendor/autoload.php';
 
// 包含 Yii 类文件
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
 
// 加载应用配置
$config = require __DIR__ . '/../config/web.php';
 
// 创建、配置、运行一个应用
(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/
 */
 
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
 
// 注册 Composer 自动加载器
require __DIR__ . '/vendor/autoload.php';
 
// 包含 Yii 类文件
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。

当定义一个常量时,通常使用类似如下代码来定义:

defined('YII_DEBUG') or define('YII_DEBUG', true);

上面的代码等同于:

if (!defined('YII_DEBUG')) {
 define('YII_DEBUG', true);
}

显然第一段代码更加简洁易懂。

常量定义应该在入口脚本的开头,这样包含其他 PHP 文件时, 常量就能生效。

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP date函数参数详解
Nov 27 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
preg_match_all使用心得分享
Jan 31 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
一个实用的php验证码类
Jul 06 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
php去除deprecated的实例方法
Nov 17 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 #PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 #PHP
PHP项目多语言配置平台实现过程解析
May 18 #PHP
Yii 框架使用Forms操作详解
May 18 #PHP
thinkphp 框架数据库切换实现方法分析
May 18 #PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 #PHP
php + ajax 实现的写入数据库操作简单示例
May 16 #PHP
You might like
php 文本文件的读取效率
2012/02/10 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
python友情链接检查方法
2015/07/08 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
Python实现的快速排序算法详解
2017/08/01 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
大学生最常用的自我评价
2013/12/07 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
大二自我鉴定
2014/01/31 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2014年安全管理工作总结
2014/12/01 职场文书