🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
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_PATH和APP_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 框架目录 ~~~ ~~~ > 入口文件中还可以定义一些系统变量,用于相关的绑定操作(通常用于多个入口的情况),这个会在后面涉及,暂且不提。