ThinkPHP实战
上QQ阅读APP看书,第一时间看更新

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所示。

图1-9