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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
PHP生成带有雪花背景的验证码
Sep 28 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
php中关于socket的系列函数总结
May 18 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
php设计模式之委托模式
Feb 13 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php中的静态变量的基本用法
2014/03/20 PHP
Laravel5中contracts详解
2015/03/02 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
php格式文件打开的四种方法
2018/02/24 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
python中round函数如何使用
2020/06/19 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
应届生自我鉴定
2013/12/11 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
优秀班主任材料
2014/12/16 职场文书
法院执行局工作总结
2015/08/11 职场文书