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 相关文章推荐
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
PHP下常用正则表达式整理
Oct 26 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
Aug 17 PHP
php session_decode函数用法讲解
May 26 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创建Cookie数组的详解
2013/07/03 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Python如何合并多个字典或映射
2020/07/24 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
运动会稿件100字
2014/02/21 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
AngularJS实现多级下拉框
2022/03/25 Javascript
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis