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 相关文章推荐
BBS(php & mysql)完整版(二)
Oct 09 PHP
php+mysql事务rollback&commit示例
Feb 08 PHP
PHP 防恶意刷新实现代码
May 16 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
php利用header函数下载各种文件
Aug 24 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 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 whois查询API制作方法
2011/06/23 PHP
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
探讨php中header的用法详解
2013/06/07 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
Linux内核产生并发的原因
2016/11/08 面试题
Delphi软件工程师试题
2013/01/29 面试题
2014年社会实践活动总结范文
2014/04/29 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
Python常遇到的错误和异常
2021/11/02 Python
Python使用DFA算法过滤内容敏感词
2022/04/22 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers