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下检测字符串是否是utf8编码的代码
Jun 28 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
PHP使用MPDF类生成PDF的方法
Dec 08 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 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执行linux系统命令的常用函数使用说明
2010/04/27 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
使用python Django做网页
2013/11/04 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python实现顺序表的简单代码
2018/09/28 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
pandas分批读取大数据集教程
2020/06/06 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
幼儿园安全检查制度
2014/01/30 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
员工生日活动方案
2014/08/24 职场文书
实习协议书范本
2014/09/25 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS