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 相关文章推荐
基于mysql的论坛(1)
Oct 09 PHP
PHP的SQL注入过程分析
Jan 06 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
基于MySQL体系结构的分析
May 02 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
基于win2003虚拟机中apache服务器的访问
Aug 01 PHP
php实现微信发红包功能
Jul 13 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 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整数取余返回负数的相关解决方法
2014/05/15 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
JavaScript事件列表解说
2006/12/22 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
详解如何较好的使用js
2016/12/16 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
如何选择适合你的JavaScript框架
2017/11/20 Javascript
react redux入门示例
2018/04/19 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
用matplotlib画等高线图详解
2017/12/14 Python
对Python中plt的画图函数详解
2018/11/07 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Python处理PDF与CDF实例
2020/02/26 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
婚庆公司的创业计划书
2014/01/22 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记