ThinkPHP简介
它是一个免费、开源的PHP框架,创立于2006年,遵循Apache2开源协议。
ThinkPHP的特点
MVC支持,基于多层模型(M)、视图(V)、控制器(C)的设计模式。
ORM支持,提供全功能高性能的ORM,支持大部分数据库。
模板引擎支持,内置了高性能的基于标签库和XML标签的编译型模板引擎。
RESTFul支持,通过REST控制器扩展提供了RESTFul支持,提供全新的URL设计和访问体验。
缓存支持,提供了包括文件、数据库、Memcache、Xcache、Redis等多种类型的缓存支持。
MVC介绍
简单来说,就是把程序分层3部分,不同部分处理不同的东西。用户请求先到达控制器,控制器调用模型层操作数据库获取结果返回,然后控制器把结果通过视图层渲染到页面上。
ThinkPHP的下载安装
目前ThinkPHP已经发展到6.0阶段,不过最为经典的还是ThinkPHP3.2版本,作为入门框架还是推荐这个版本,后面的版本也是在此基础上有增加了很多功能而已,不过功能太多也不便于学习,所以先学3.2版本。
http://www.thinkphp.cn/down.html 进入此页,选择3.2.
ThinkPHP的目录结构
下载框架后,解压缩到web目录下面,可以看到初始的目录结构如下:
wwwWEB部署目录(或者子目录)├─index.php 入口文件├─README.md README文件├─Application 应用目录├─Public资源文件目录└─ThinkPHP框架目录
其中框架目录ThinkPHP的结构如下:
├─ThinkPHP 框架系统目录(可以部署在非web目录下面)│├─Common 核心公共函数目录│├─Conf 核心配置目录 │├─Lang 核心语言包目录│├─Library框架类库目录││├─Think 核心Think类库包目录││├─Behavior行为类库目录││├─Org Org类库包目录││├─Vendor第三方类库目录││├─ ...更多类库目录│├─Mode 框架应用模式目录│├─Tpl系统模板目录│├─LICENSE.txt框架授权协议文件│├─logo.png 框架LOGO文件│├─README.txt 框架README文件│└─ThinkPHP.php 框架入口文件
入口文件的作用
单一入口的应用程序就是说用一个文件处理所有的HTTP请求,例如不管是列表页还是文章页,都是从浏览器访问index.php文件,这个文件就是这个应用程序的单一入口。
打个比方,大家都要上WC,都是男生进一个门,女生进一个门,这两个门就是WC的两个入口。而现在去一个公园里面的WC,外面还有一个门,不管男女都从最外面的门进入,交了钱以后才进入里面的男厕所门或女厕所门,而这个最外面的门就是这个WC的单一入口。
-
单一入口应用程序对应多入口有哪些优势呢?
单一入口应用程序的所有http请求都是通过index.php接收并转发到功能代码中去的,所以在index.php里面就能完成许多实际工作(所有页面都需要做的且都一样的工作)。比如进行集中的安全性检查,访问统计等等,如果不是单一入口,那么开发者就必须记得在每一个文件的开始加上安全性检查代码,当然,你也许会说,多入口的安全性检查可以写到另一个文件中,然后include一下就可以了。但实际针对一个相对较大型一点的应用项目,在几十个文件中保持头部的几个include都一致可不是一件让人省心的事。
与安全性检查类似。在入口里,我们还可以对url参数和post进行必要的检查和特殊字符过滤、记录日志、访问统计等等各种可以集中处理的任务。这样就可以看出,由于这些工作都被集中到了index.php来完成,可以减轻我们维护其他功能代码的难度。
-
单一入口应用程序的缺点?
任何事情都有两面性,单一入口应用程序也不例外。由于所有http请求都是访问 index.php ,所以程序的 url 看起来不那么美观,特别是对搜索引擎来说不太友好。比如下面这个 url:
http://www.phpernote.com/index.php?controller=posts&action=index
我们知道这种URl不太方便记忆,而且搜索引擎不认它是一个正常的 URL,当然是相比下面这种 URl 来说的:
http://www.phpernote.com/index.php/posts/index/
不过这个也不是什么大问题,可以采用url重写、PATHINFO等方式就可以轻松解决这个问题。
OK,单一入口模式就写这么多了,当然要想深刻理解单一模式,最好的办法还是自己尝试着用单一入口模式写一个小应用出来深刻体会一下。