Yii入口脚本

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

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

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

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

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

Web 应用

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

<?phpdefined(‘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);// fcgi 默认没有定义 STDIN 和 STDOUTdefined(‘STDIN‘) or define(‘STDIN‘, fopen(‘php://stdin‘, ‘r‘));defined(‘STDOUT‘) or define(‘STDOUT‘, fopen(‘php://stdout‘, ‘w‘));// 注册 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 文件时,常量就能生效。

时间: 2024-11-02 10:10:01

Yii入口脚本的相关文章

yii去除index.php的入口脚本显示为seo友好的url

1.去除入口脚本需要在重写url,如果你的webserver软件时Apache的话,必须配置httpd.conf,搜索“LoadModule rewrite_module modules/mod_rewrite.so”,然后去掉此行前面的“#”[ps:注释符号]: 2.在yii的web应用程序主配置文件main.php[path\to\protected\config\main.php],使用urlManager增加一个数组配置选项'showScriptName'=>false: 1 'urlM

yii2 入口脚本

yii2 入口脚本介绍 一.前言 入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本.终端用户的请求通过入口脚本实例化应用并将将请求转发到应用. Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称. 控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文件需要有执行权限,这样用户就能通过命令 ./yii[arguments] [options] 来运行控

小米2019年PHP工程师面试题和答案解析

一.单选题(共29题,每题5分) 1.PHP面向对象方法重写描述错误的是? A.子类必须继承父类 B.子类可以重写父类已有方法 C.重写之后子类会调用父类方法 D.子类也可以具有与父类同名的属性,进行属性覆盖 参考答案:C 答案解析:重写之后子类不会再去调用父类的方法,而是直接调用自身的方法. 2.php选项/信息函数作用错误的是? A.phpinfo() 输出关于 PHP 配置的信息 B.php_sapi_name() 返回 web 服务器和 PHP 之间的接口类型 C.ini_set() 为

yii请求url

yii\web\Request::url:返回 /admin/index.php/product?id=100, 此URL不包括host info部分. yii\web\Request::absoluteUrl:返回 http://example.com/admin/index.php/product?id=100, 包含host infode的整个URL. yii\web\Request::hostInfo:返回 http://example.com, 只有host info部分. yii\w

【Yii系列】处理请求

缘起 这一章是Yii系列的第三章,前两章给大伙讲解了Yii2.0的安装与Yii2.0的基本框架及基础概念,传送门: [Yii2.0的安装与调试]:http://www.cnblogs.com/riverdubu/p/6439680.html [Yii2.0基础框架]:http://www.cnblogs.com/riverdubu/p/6607373.html 相信学习过上两章的内容,你们是不是对Yii有个大致的了解了呢,Yii2.0基础框架这一章很重要,不仅仅是因为它的长度,而是里面讲解了整个

【Yii系列】最佳实践之后台业务框架

缘起 上面的几章都讲概念了,没有怎么讲到实践的东西,可能会有些枯燥,这很正常的,概念还是需要慢慢啃的,尤其是官网其他的部分,需要狠狠的啃. 什么,你啃不动了?看看官网旁边的那个在线用户吧. 你不啃的时候可是有这么多人在啃知识,如果不想以后被这打击,赶紧学!!!一如当年大学的我,每天夜里都抱着一本<算法导论>在啃一样,自律相当重要. 这一章我就带大伙了解一下前两章的概念有啥用,应用到实际,这是临门一脚,但是,我总是觉得概念的重要性至少要占70%,临门的一脚实践只占30%,望君能体会~ 环境 操作

Yii Framework2.0开发教程(4)在yii中定义全局变量

在yii中定义全局变量最好的地方是入口脚本处.也就是web文件夹中的index.php文件 例如我们在defined('YII_ENV') or define('YII_ENV', 'dev');后写上 defined('ZYL_HEHE') or define('ZYL_HEHE','zhyoulun-hehe'); 并在我们教程(1)中建立的views/zhyoulun/helloworld.php文件中写上 <?php echo 'hello world!'; //全局变量 echo co

Yii源码阅读笔记(三十二)

web/Application类的注释,继承base/Application类,针对web应用的一些处理: 1 namespace yii\web; 2 3 use Yii; 4 use yii\base\InvalidRouteException; 5 6 /** 7 * Application is the base class for all web application classes. 8 * Application 是所有web应用的基类 9 * 10 * @property st

Yii源码阅读笔记(九)

Behvaior类,Behavior类是所有事件类的基类: 1 namespace yii\base; 2 3 /** 4 * Behavior is the base class for all behavior classes. 5 * 所有行为的基类 6 * A behavior can be used to enhance the functionality of an existing component without modifying its code. 7 * In parti