tp3简介
在国内的thinkPHP是一个非常不错的框架,很多的PHP程序员入门的第一个框架就是thinkPHP,俗称tp框架。并且这个框架也是最好掌握MVC开发思想的框架,学习起来的成本也是很低的。
目前这个框架存在两个大的版本:
- tp3
- tp5
注意:tp5是不兼容tp3,也就是说之前使用的tp3开发的项目是没有直接升级到tp5。并且tp5是完全参照laravel框架进行了编写的。
一般来说如果去企业上班新的项目肯定都是tp5,但是一些老的项目还是tp3,并且目前情况说tp3还会存活很长一段时间。
下载
下载后
部署
注意:tp3不能在PHP7下运行。
创建虚拟主机
浏览器访问
目录结构
整体规划
入口文件
应用目录
公共文件
模块
后期我们写代码的时候,基本上都只在模块里面进行书写,如果出于业务考虑,可以在增加一些模块。
控制器学习
我们学习的是一个MVC的产品,那么在学习的时候,学习的顺序是有讲究:
用户能够直接访问的是MVC里面的哪一个呢?
答:只能接触到的C,控制器。V是由控制器里面的业务代码决定是否载入。
开始从控制器学习,学习之后还要做一件事,如何调用控制器里面的方法?
如何调用控制器里面的方法?
为什么可以看到tp3的笑脸?
原理就是这样对上了。需要对访问规则做一个抽象。
在tp3里面的对于控制器下的方法访问有很==四种url模式== : 普通模式、PATHINFO、REWRITE和兼容模式
PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。
1
域名/入口文件/模块的名称/控制器名称/方法名称?get传参
这种模式其实对于搜索引擎来说是最喜欢。
普通模式, 一种使用的比较多的模式,也就是传统的GET传参方式来指定当前访问的模块和操作
1
域名/index.php?m=Home&c=Index&a=index
m
代表的是模块,传递一个模块的名称c
代表的是控制器,传递一个控制器的名称a
代表的动词(action),传递一个控制器里面的方法的名称REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。
如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:
1
2
3
4
5<IfModule mod_rewrite.c>
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>接下来,就可以用下面的URL地址访问了:
http://localhost/home/user/login/var/value
兼容模式是用于不支持PATHINFO的特殊环境,URL地址是:
http://localhost/?s=/home/user/login/var/value
可以更改兼容模式变量的名称定义,例如:
1
'VAR_PATHINFO' => 'pathinfo'
PATHINFO参数分隔符对兼容模式依然有效,例如:
1
2// 更改PATHINFO参数分隔符
'URL_PATHINFO_DEPR'=>'-',使用以上配置的话,URL访问地址可以变成:
http://localhost/?s=/home-user-login-var-value
方法调用的演示
快速入门测试,我们在Home模块的IndexController控制器文件增加一个test方法,然后在浏览器进行访问调用。
效果
控制器规范
思考:
- 控制器写在哪里?
- 控制器的文件如何命名?
- 控制器里面的代码如何书写?
- 控制器的如何被调用?
实操:
控制器写在哪里?
控制器的文件如何命名?
规则
控制器名
: 首字母大写Controller
: 控制器后缀1
控制器名 + Controller.class.php
控制器里面的代码如何书写?
控制器的如何被调用?
域名/index.php?m=Home&c=User&a=index
域名/index.php/Home/User/index
思考:我们现在是在Home这个模块写的控制器,如果处于业务需要,现在需要增加一个Admin模块,需要做一个后台首页的功能。则需要一个后台模块,一个后台的首页控制器。
建立一个Admin后台模块
建立一个IndexController.class.php文件
注意:这里的内容我们需要修改
在该控制器里面增加一个index方法,然后浏览器访问
视图学习
视图规范
思考:
- 视图写在哪里?
- 视图文件如何命名?
- 视图里面的该写什么?
- 视图如何被载入?
实操:
视图写在哪里?
视图文件如何命名?
视图里面的该写什么?
html标签
可以PHP代码
也可以使用PHP的内置的标签
视图如何被载入?
效果
分配变量到视图
思考:如何在视图中控制器方法里面的变量?
视图代码:
效果:
模型学习
数据库配置
思考:
模型是和数据库打交道的,那么模型和哪个数据库打交道?
答:我们先在框架完成数据库的配置。
我们希望TP3和上面的数据库打交道。
模型规范
当我们配置完成之后,在考虑模型的事?
- 模型写在哪里?
- 模型文件如何命名?
- 模型里面的内容如何编写?
- 模型如何被实例化?
模型写在哪里?
模型文件如何命名?
模型里面的内容如何编写?
模型如何被实例化,调用模型的方法,获取数据
效果
模型常见方法
- select方法:该方法是用于获取所有的记录信息
- field方法:获取指定的字段信息
- find方法:获取单条记录信息
建议看一下手册:
模型简洁调用
D方法
用于数据模型的实例化操作
M方法
用于数据模型的实例化操作,由于不需要加载具体的模型类,所以性能会更高。
注意:
这里的M函数得到实例对象其实是系统Model.class.php类的实例。
在我们实例D或者M的时候,其实没有严格的要求,一般M实例化系统的Model,D实例化的我们自定义的模型。但是需要注意的是,D也可以实例化系统模型。
总结
通过上面的学习,我们学会了Tp3里面的MVC这种开发思想。