框架概述
1.1、回顾MVC(重点理解)
MVC是一个编程思想。将业务拆分成为三个板块分别为模型、视图以及控制器
M代表是的模型主要是进行数据交互
V代表的就是视图主要是与用户进行交互
C代表是控制器作用作用是进行中间的协同工作。调度模型或者视图完成工作
1.2、什么是框架
框架就是一个半成品的代码库。包括很多的基础功能,能够方便进行项目的开发。使用框架进行项目开发可以节省开发时间。
例如:在前端页面上进行dom操作。可以使用原生的js进行。也可以使用jQuery来进行dom操作。此处jQuery就是前端的一款框架
1.3、PHP的常用框架
- zendframework:由zend公司开发的一款重量级的框架
- YII:基于组件的一款框架
- CI框架:一款比较轻量的框架
- laravel框架:最优雅的框架
5、thinkPHP框架:国产框架
1.4、TP框架的优点
国产思想符合国人、代码注释都是中文。并且使用量比较大。社区活跃(问题能够及时解决)
TP框架的基本使用
2.1、TP源码下载
2.1.1、关于版本的选择
3.2版本:主要是针对于web项目(有前台后台)
5.0版本:主要针对api接口项目(全部都是写接口)
关于实际在开发项目中版本的选择没有严格的界限。例如web项目也可以使用5.0版本。写接口也可以使用3.2版本
2.1.2、下载TP3.2版本源代码
关于核心版本与完整版的区别。对于核心版本只包括了框架的基本功能。对于完整版本除了框架基本内容之外还包括其他的功能。例如分页、文件上传等
2.2、TP框架项目部署(实现)
2.2.1、解析下载的源代码目录文件
①解析下载的源码
Application:TP默认的应用代码存储的目录(存储自己编写的代码)
Public:TP推荐的存储资源文件的目录
ThinkPHP:TP框架的源代码目录
.htaccess:Apache的重写规则文件
composer.json:composer的配置文件。composer是PHP的代码管理工具
Index.php:项目的入口文件(非常重要)
②TP框架的源码目录
Common:存储TP所提供的公共函数文件。对于此目录下的functions.php中的函数可以在任何位置直接使用
Conf:TP的默认配置信息目录
Lang:TP的语言包
Library:TP框架的核心的类库目录
Mode:TP所支持的模式
Tpl:TP默认的系统模板目录
ThinkPHP.php:tp框架的入口文件(在项目的入口文件中必须要载入此文件来载入整个TP框架)
2.2.2、创建项目
①创建项目目录
②拷贝TP的框架源代码
2.2.3、创建虚拟主机
①修改Apache的虚拟主机配置文件
②修改本机的hosts文件
③重启Apache访问测试
2.2.4、创建应用
①编写入口文件
②访问测试
③查看效果
④解释应用中的目录
⑤进入Home解释目录
优化小技巧:
- 解决自己项目中的死链接。如果死链接比较多。会影响到项目的加载速度
2、更换磁盘为固态
- 磁盘冗余阵列。买raid卡挂载多块磁盘
控制器及URL模式
3.1、创建控制器
3.1.1、控制器的存储方式
- 存储地址
应用(application)/模块(Home)/Controller
- 文件命名
控制器名称(满足驼峰式规范)+Controller+.class.php
3.1.2、控制器的创建规则
- 申明命名空间(按照目录地址规则)
- 引入TP的控制器的基类
- 编写自定义的控制器的类
3.1.3、具体创建控制器
3.2、URL地址解析
默认情况下TP访问的完整地址:http://域名/入口文件?m=模块名称&c=控制器名称&a=方法名称(操作)
①在控制器中增加方法
②访问测试
3.3、默认访问(理解)
3.3.1、分析默认访问的情况
对于上述直接访问首先Apache的默认访问页为index.php因此就进入到项目的入口文件。由于TP默认的配置项设置默认的模块为Home默认的控制器为Index默认的方法为index因此可以看到上述效果
3.3.2、修改默认访问
①查看TP中的默认配置项
②修改配置项
③删除缓存文件
④查看效果如下
此时产生报错的原因是因为默认的方法不存在
3.4、调试模式
通过定义一个常量操作TP所处的模式。调试默认每次都会自动的加载最新的配置文件以及公共函数。跟调试模式对应的叫做生产模式
在实际开发的过程中开启调试模式。当项目上线运行的过程中需要使用生产模式。在生成模式下会缓存(临时存储信息)对于的文件信息也会减少日志文件的生成
①开启调试模式
②查看访问效果
③查看runtime下的目录
3.5、TP中的模块
在TP中的应用目录下每一个文件就是一个模块只是Common跟Runtime比较特殊。不能参与项目中其他”访问功能业务”。想要增加模块可以直接在应用目录下去增加目录即可
例如如下增加后台模块
①创建目录
②创建控制器
③访问测试
3.6、TP中的配置文件
3.6.1、配置文件地址
- Tp框架中惯例配置文件(ThinkPHP\Conf\convention.php)
- 公共模块的配置文件(Application\Common\Conf\config.php)
- 某一个模块的配置文件(Application\模块\Conf\config.php)
对于配置文件TP是自动载入的。因此可以在项目中直接使用配置文件
3.6.2、TP中配置文件的优先级
配置文件优先级含义:当同一个配置项在三个文件中同时出现最终使用哪一个配置文件中的内容
模块配置文件>公共模块配置文件>TP惯例配置文件
3.6.3、演示配置文件优先级
①修改公共模块的配置文件
②修改Home模块下的配置
③增加测试方法
④查看效果
3.7、TP中的四种URL模式(重点)
3.7.1、四种URL模式介绍
①普通模式
直接通过给入口文件传递m、c、a三个参数
m对应模块名称
c对应控制器名称
a对应方法名称
格式:http://tp.com/index.php?m=Home&c=Index&a=test2
任何情况下都可以访问
②pathinfo模式
Pathinfo模式从URL地址栏上看上去像一个目录的格式。
格式为:http://tp.com/index.php/Home/Index/test2
对于上述的地址格式入口文件后的每一个“/”分隔的就是一个参数
Home(第一个参数)对应的模块名称
Index(第二个参数)对应的控制器名称
Test2(第三个参数)对应的方法名称
注意:pathinfo模式需要有web服务器的支持 Apache支持此模式。Nginx就不支持
③重写模式
将原本的URL访问改写成其他的URL形式。重写模式根据不同的web服务器决定。最常见的重写就是隐藏项目的入口文件
例如
访问:http://tp.com/Home/Index/test2=>解析的地址为http://tp.com、index.php/Home/Index/test2
④兼容模式
考虑部分web服务器不支持pathinfo。又想要去使用类似pathinfo的格式。就可以使用兼容模式
格式:http://tp.com/index.php?s=/Home/Index/test2
兼容模式没有任何其他的外界要求
3.7.2、实现隐藏入口文件
①开启Apache的重写模块
②设置虚拟主机可以重写
③拷贝重写规则文件
④重启Apache查看效果
注意:只要条件满足TP中的四种URL模式都可以使用访问到方法
3.7.3、URL地址生成(重点会用)
使用TP提供的U函数根据当前的模型、控制器、方法、参数等生产一个链接地址
①查看U函数的使用方式
②编写测试代码
④查看效果
从上述结果中可以得知TP默认的是使用pathinfo模式
在TP的配置文件中有一个URL_MODEL控制使用的URL模式
⑤查看惯例配置中的配置项
⑥查看普通模式的地址
修改URL模式
效果如下
⑦查看重写模式地址
结果如下
⑧查看兼容模式
注意:TP中的四种URL模式并不是限制项目需要使用哪一种模式进行访问。URL_MODEL配置项的作用是为了控制U函数所生成的URL地址的格式
3.8、页面跳转与重定向
关于页面跳转跟重定向功能是经常使用。常见位置在数据操作完成之后的提示信息
3.8.1、页面跳转
在TP的控制器基类中提供了两个方法可以实现跳转功能分别为success跟error
①查看源码位置
②测试成功的方法使用
③测试失败的方法的使用
④关于成功失败跳转的模板文件地址
3.8.2、页面重定向
①查看使用方式
②创建方法测试
③查看效果
3.9、空控制器与空操作
3.9.1、空操作
当用户访问某一个不存在的方法时接下来由单独的一个空操作(对应在控制中的_empty的方法)实现处理请求。
①增加方法
②访问测试
3.9.2、空控制器
当用户访问一个不存在的控制器时会自动的去执行空控制下对应的方法。
①先创建空控制器
②执行查看效果
③在空控制器中创建空方法
效果如下
备注:最好事先错误的提示页面通过使用web服务器的错误提示设置
视图(一)
4.1、视图创建规则
4.1.1、视图创建规则
- 默认情况下需要将视图的模板文件存储在模块下的view目录中
- 默认情况下视图存储需要在View下跟控制器同名的目录中
- 默认情况下视图模板文件名称需要保持跟方法同名后缀为.html的模板
4.1.2、创建视图
①创建根控制器同名的目录
②创建模板
4.2、控制器调用视图
对于在TP的方法中需要使用视图的模板可以使用两个方法分别为display跟fetch方法。
对于display跟fetch用法一模一样,区别在于display会直接输出模板的结果。Fetch不会直接输出
4.2.1、演示display跟fetch的区别
①创建方法
②查看效果
修改showtwo方法
结果如下
4.2.2、演示display用法
①查看使用方式
②指定模块方式使用display
创建测试方法
查看效果
③直接指定模板文件地址
创建测试方法
查看结果
4.3、模板替换
模板替换就是通过在模板中使用TP内置的”模板变量”.TP在每次渲染模板之前都会讲对应的模板变量进行替换
4.3.1、内置的模板替换
①查看文档
在TP有内置的模板变量替换如下
②修改show模板查看效果
效果如下
最常使用的是__PUBLIC__替换资源地址
4.3.2、自定义模板替换
①增加自定义配置项
②模板中使用
③效果如下
案例-搭建电商项目后台
5.1、项目部署
5.1.1、创建项目
①创建项目的根目录
②创建wwwroot目录
③拷贝TP的框架源代码
④拷贝入口文件及重写规则文件
5.1.2、配置虚拟主机
①增加虚拟主机
②修改hosts文件
③修改入口文件
④重启Apache访问查看
查看目录结构
对于此方式部署项目由于域名解析的目录下只有入口文件。因此项目的安全性更好
5.2、创建后台模块
①复制Home模块为Admin
②修改后台模块下的index控制器
③访问查看
5.3、处理URL地址
5.3.1、隐藏入口文件
①修改Apache的配置启用重写模式
②设置虚拟主机可以重启
重写规则文件已经拷贝
③重启Apache访问测试
④创建测试方法使用U函数生成
⑤访问测试
⑥设置为重写模式
再次查看效果
5.3.2、隐藏Home模块
①设置默认的模块以及容许访问的模块
②查看效果
5.4、实现后台的首页显示
①修改Index控制器代码
②创建视图目录
③拷贝首页模板
④查看效果
⑤拷贝其他模板
⑥查看效果
⑦修改首页的模板
5.5、处理后台资源地址
①拷贝资源文件
②自定义模板替换
③修改top模板
④修改menu模板
⑤修改main模板