Thinkphp 框架基础之入口文件功能、定义与用法分析


Posted in PHP onApril 27, 2020

本文实例讲述了Thinkphp 框架基础之入口文件功能、定义与用法。分享给大家供大家参考,具体如下:

入口文件

ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口。

应该说,所有应用都是从入口文件开始的,并且不同应用的入口文件是类似的。

入口文件定义

入口文件主要完成:

  • 定义框架路径、项目路径(可选)
  • 定义调试模式和应用模式(可选)
  • 定义系统相关常量(可选)
  • 载入框架入口文件(必须)

默认情况下,框架已经自带了一个应用入口文件(以及默认的目录结构),内容如下:

define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';

如果你改变了项目目录(例如把Application更改为Apps),只需要在入口文件更改APP_PATH常量定义即可:

define('APP_PATH','./Apps/');
require './ThinkPHP/ThinkPHP.php';

注意:APP_PATH的定义支持相对路径和绝对路径,但必须以“/”结束

如果你调整了框架核心目录的位置或者目录名,只需要这样修改:

define('APP_PATH','./Application/');
require './Think/ThinkPHP.php';

也可以单独定义一个THINK_PATH常量用于引入:

define('APP_PATH','./Application/');
define('THINK_PATH',realpath('../Think').'/');
require THINK_PATH.'ThinkPHP.php';

APP_PATH一样THINK_PATH路径定义也必须以“/”结尾。
THINK_PATHAPP_PATH定义绝对路径会提高系统的加载效率。

入口文件中的其他定义

一般不建议在入口文件中做过多的操作,但可以重新定义一些系统常量,入口文件中支持定义(建议)的一些系统常量包括:

常量 描述
THINK_PATH 框架目录
APP_PATH 应用目录
RUNTIME_PATH 应用运行时目录(可写)
APP_DEBUG 应用调试模式 (默认为false)
STORAGE_TYPE 存储类型(默认为File)
APP_MODE 应用模式(默认为common)

注意:所有路径常量都必须以“/”结尾

例如,我们可以在入口文件中重新定义相关目录并且开启调试模式:

// 定义应用目录
define('APP_PATH','./Apps/');
// 定义运行时目录
define('RUNTIME_PATH','./Runtime/');
// 开启调试模式
define('APP_DEBUG',True);
// 更名框架目录名称,并载入框架入口文件
require './Think/ThinkPHP.php';

这样最终的应用目录结构如下:

www  WEB部署目录(或者子目录)
├─index.php       应用入口文件
├─Apps            应用目录
├─Public          资源文件目录
├─Runtime         运行时目录
└─Think           框架目录

入口文件中还可以定义一些系统变量,用于相关的绑定操作(通常用于多个入口的情况)

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

PHP 相关文章推荐
PHP新手上路(九)
Oct 09 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
Jan 06 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
Oct 15 PHP
Laravel框架自定义分页样式操作示例
Jan 26 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 #PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 #PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 #PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 #PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 #PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 #PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 #PHP
You might like
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
Node.js中的流(Stream)介绍
2015/03/30 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
2015/06/05 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
详解Vue生命周期的示例
2017/03/10 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
详细介绍Python的鸭子类型
2016/09/12 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
pygame实现飞机大战
2020/03/11 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局
2014/10/10 HTML / CSS
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
电力安全事故反思
2014/04/27 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
综合测评个人总结
2015/03/03 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技