![ThinkPHP实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/852/26943852/b_26943852.jpg)
1.5 应用结构说明
1.5.1 目录说明
一个典型的ThinkPHP应用目录结构如下:
├─index.php 入口文件 ├─README.md README文件 ├─Application 应用目录 ├─Public 资源文件目录 └─ThinkPHP 框架目录
其中应用目录Application的结构如下:
├─Common 公用模块 ├─Common 公用函数目录(如自定义函数库) ├─Conf 公用配置目录(如数据库配置) ├─Home Home模块目录(默认模块) ├─Common Home模块函数目录(模块函数库只在本模块有效) ├─Conf Home模块配置目录(如Home模块使用其他数据库) ├─Controller Home模块控制器目录 ├─Model Home模块模型目录 ├─View Home模块视图目录 ……其他模块 └─Runtime 运行时目录
1.5.2 入口文件
几乎所有的PHP MVC框架都会采用单一入口(网站的所有访问都会经过该文件)进行项目访问,ThinkPHP也不例外。
入口文件主要完成以下事情:
● 定义框架路径、项目路径。
● 定义调试模式和应用模式(可选)。
● 定义全局常量(可选)。
● 加载框架入口文件。
1.5.3 自动生成
细心的读者可能会发现,下载的thinkphp_3.2.3_full.zip解压后Application目录是空的,而访问www.test.com之后会发现该目录下面多出了Common、Home、Runtime目录。这其实是ThinkPHP自动生成的,目的是为了简化开发工作,规范项目结构。而每个目录下都有一个index.html文件,打开这个文件后发现只有一个空格,这又是做什么的呢?这也是ThinkPHP为我们做的,目的是为了安全,因为有些Web服务器可能没有关闭目录访问,如果一个目录中没有默认首页(浏览器地址栏未指定访问文件时,服务器自动访问的文件,一般为index.php、index.html)时,整个目录会显示在浏览器窗口中,有害网站安全。
1.5.4 模块
ThinkPHP3.2采用模块化的设计,每个模块之间相对独立,每个模块可以很方便地卸载和部署。默认模块为Home模块,如果想添加其他模块,比如后台模块,则在Home目录同级建立Admin目录即可。一个典型的模块目录如下:
├─Common 模块函数目录 ├─Conf 模块配置目录 ├─Controller模块控制器目录 ├─Model 模块模型目录 ├─View 模块视图目录
1.5.5 控制器
当我们访问www.test.com时,浏览器怎么会显示出“欢迎使用ThinkPHP! ”字样呢?简要地分析一下执行流程:
步骤01
Web服务器加载默认首页。
步骤02
ndex.php加载ThinkPHP.php,框架开始运行。
步骤03
由于未指定模块、控制器和动作,框架采用默认配置:Home模块、Index控制器、index动作。
步骤04
根据APP_PATH找到Application目录,再根据模块名、控制器名和动作名找到Home目录下的IndexController.class.php,并执行其中的index方法,我们可以打开文件查看一下代码,代码如图1-9所示。
![](https://epubservercos.yuewen.com/DB83A9/15367251204210306/epubprivate/OEBPS/Images/Figure-0024-0009.jpg?sign=1739280887-WTiiuaUmkUwTG6XwvAPV0uggQRcLdg4e-0-15392be20983e13cbe83a8cbbc239e18)
图1-9