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 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
PHPMailer的主要功能特点和简单使用说明
Feb 17 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
php验证码实现代码(3种)
Sep 07 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
PHP单例模式与工厂模式详解
Aug 29 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
德生H-501的评价与改造
2021/03/02 无线电
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
房地产出纳岗位职责
2013/12/01 职场文书
大学班级文化建设方案
2014/05/06 职场文书
扬尘污染防治方案
2014/06/15 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
房屋买卖协议样本
2014/11/16 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
React中的Context应用场景分析
2021/06/11 Javascript
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python