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脚本的10个技巧(3)
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
PHP获取网站域名和地址的代码
Aug 17 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
php动态函数调用方法
May 21 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 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无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
php注册登录系统简化版
2020/12/28 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
javascript event 事件解析
2011/01/31 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
设置python3为默认python的方法
2018/10/31 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
python实现发送邮件
2021/03/02 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
元宵节晚会主持人串词
2014/03/25 职场文书
单位委托书怎么写
2014/09/21 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL