ThinkPHP3.2发布已有很长时间了,和ThinkPHP3.1相比,做了很大的修改。正对一些ThinkPHP的初学者,目前官方网站仅有3.1的快速入门教程,本人本着学习和分享的精神,在官方“ThinkPHP3.1快速入门”的基础上进行修改。如涉及版权问题,请及时联系我(admin#wanglijie.cn).
目录结构
ThinkPHP最新版本可以在官方网站(http://thinkphp.cn/down/framework.html)或者Github(https://github.com/liu21st/thinkphp/downloads)下载。
把下载后的压缩文件解压到你的WEB目录(或者任何目录都可以),框架的目录结构为:
www WEB部署目录(或者子目录) ├─index.php 入口文件 ├─README.md README文件 ├─Application 应用目录 ├─Public 资源文件目录 ├─ThinkPHP 框架系统目录(可以部署在非web目录下面) │ ├─Common 核心公共函数目录 │ ├─Conf 核心配置目录 │ ├─Lang 核心语言包目录 │ ├─Library 框架类库目录 │ │ ├─Think 核心Think类库包目录 │ │ ├─Behavior 行为类库目录 │ │ ├─Org Org类库包目录 │ │ ├─Vendor 第三方类库目录 │ │ ├─ ... 更多类库目录 │ ├─Mode 框架应用模式目录 │ ├─Tpl 系统模板目录 │ ├─LICENSE.txt 框架授权协议文件 │ ├─logo.png 框架LOGO文件 │ ├─README.txt 框架README文件 │ └─index.php 框架入口文件
3.2版本相比之前的版本自带了一个完整的应用目录结构和默认的应用入口文件,开发人员可以在这个基础之上灵活调整。其中,Application和Public目录下面都是空的。
入口文件
默认情况下,3.2版本的框架已经自带了一个应用入口文件(以及默认的目录结构),具体index.php内容如下:
// 应用入口文件 // 检测PHP环境 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); // 定义应用目录 define('APP_PATH','./Application/'); // 引入ThinkPHP入口文件 require './ThinkPHP/ThinkPHP.php';
模块
3.2发布版本自带了一个应用目录结构,并且带了一个默认的应用入口文件,方便部署和测试,默认的应用目录是Application(实际部署过程中可以随意设置)。
通常情况下3.2无需使用多应用模式,因为大多数情况下,我们都可以通过多模块化以及多入口的设计来解决应用的扩展需求。
新版采用模块化的设计架构,下面是一个应用目录下面的模块目录结构,每个模块可以方便的卸载和部署,并且支持公共模块。
Application 默认应用目录(可以设置) ├─Common 公共模块(不能直接访问) ├─Home 前台模块 ├─Admin 后台模块 ├─... 其他更多模块 ├─Runtime 默认运行时目录(可以设置)
注意:3.2版本在原来3.1.3的独立分组的基础上进行了改进,改进后的独立分组就是新版的模块,之前的模块则改称为控制器。
每个模块是相对独立的,其目录结构如下:
├─Module 模块目录 │ ├─Conf 配置文件目录 │ ├─Common 公共函数目录 │ ├─Controller 控制器目录 │ ├─Model 模型目录 │ ├─Logic 逻辑目录(可选) │ ├─Service Service目录(可选) │ ... 更多分层目录可选 │ └─View 视图目录
由于采用多层的MVC机制,除了Conf和Common目录外,每个模块下面的目录结构可以根据需要灵活设置和添加,所以并不拘泥于上面展现的目录
控制器
我们可以在自动生成的Application/Home/Controller目录下面找到一个 IndexController.class.php 文件,这就是默认的Index控制器文件。
控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller
控制器文件的命名方式是:类名+class.php(类文件后缀)
默认的欢迎页面其实就是访问的Home模块下面的Index控制器类的index操作方法 我们修改默认的index操作方法如下:
namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ echo 'hello,world!'; } }
再次运行应用入口文件,浏览器会显示:hello,world!。
我们再来看下控制器类,IndexController控制器类的开头是命名空间定义:
namespace Home\Controller;
这是系统的规范要求,表示当前类是Home模块下的控制器类,命名空间和实际的控制器文件所在的路径是一致的,也就是说: Home\Controller\IndexController类 对应的控制器文件位于应用目录下面的 Home/Controller/IndexController.class.php,如果你改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改。
注意:命名空间定义必须写在所有的PHP代码之前声明,否则会出错
use Think\Controller;
表示引入 Think\Controller 命名空间便于直接使用。 所以,
use Think\Controller; class IndexController extends Controller
等同于使用:
class IndexController extends \Think\Controller
转载请注明:自动化运维 » ThinkPHP3.2快速入门(1)基础