作者:u47871838 | 来源:互联网 | 2023-08-15 15:33
此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
若是想看整个学习笔记代码和数据库可点击此处(包含个人书写的项目代码及数据库文件)。
第一天概述
1.创建应用
2.四种路由形式
3.控制器调用视图模板
4.已有模板与框架结合
5.创建Admin分组
6.使用常量
7.配置文件
8.两种模式
9.使用smarty引擎
第一天详细内容
1.什么是框架
php框架是许多代码的集合,这些代码是程序结构的代码(并不是业务代码)代码中有许多函数、类、功能类包,框架的代码按照一定的标准组成了一个有机的功能体,这个功能体中包含了许多设计模式如MVC,单例,AR等等。
2.不使用框架开发遇到的问题
(1)代码编写没有统一的规范
(2)程序项目的生命时间特别短,不延续
(3)一个小地方的修改会牵扯到全局变化,牵一发而动全身
(4)不能很好满足客户各方面需求
3.使用框架的好处
(1)框架可以帮助我们快速、稳定、高效搭建程序系统
(2)该系统由于框架的使用使得本身的维护性、灵活性、适应客户需求方面得到最大化的增强。
(3)使用框架的过程中可以使我们的注意力全部集中在业务层面,而无需关心底层架构。
(4)可以节省很多代码的工作量
4.相关框架
(1)zendframework
php语言公司zend发布的官方框架,有许多OOP面向对象内容,功能非常丰富,重量级框架
重量级:(1)语言级别(高级语言OOP)(2)功能丰富
轻量级:(1)语言级别(面向过程或有少许的OOP)(2)功能相对较少但是实用
高级语言:例如java是用类对变量、函数的封装
中级语言:例如C是用变量、函数对中低语言代码的封装
中低级语言:例如汇编语言,比如低级语言再高级一点的语言,是对二进制代码的封装
低级语言:二进制代码语言
(2)Yii
国人(华人)自己开发的框架,名字(xue qiang),重量级框架,纯OOP框架,该框架的特点是把代码的重用性发挥到极致,速度非常快。外企使用最多的框架。
该框架思想来源于symfony、jQuery等。
作者之前是prado框架的核心维护人员,维护该框架3年之久。
(3)cakephp
cakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该框架的主要目标是让各种层次的PHP开发人员都能快速灵活的开发健壮的web应用。
(4)symfony
symfony是一个基于MVC模式的面向对象的PHP5框架。
(5)ThinkPHP
轻量级框架。内部OOP和面向过程代码都纯在,是国人自己开发的框架。
ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷web应用开发而诞生的。最早诞生于2006年初,原名FCS,2007元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断地改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式, 融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模板引擎、缓存机制、认证机制和扩展性方面均有独特的表现。
5.模板文件介绍
6.路由形式
Get方式:
(1)http://网站域名/index.php?m=分组名&c=控制器名&a=方法名
参数m:module,表示分组
参数c:controller,表示控制器
参数a:action,表示具体的请求方法
例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:
http://www.weizai.com/index.php?m=Home&c=Index&a=index
pathinfo路由形式【默认形式】
语法:http://网址域名/index/模块名/控制器名/方法名/参数名/参数值…
例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:
http://www.weizai.com/index.php/Home/Index/index
重写(rewrite)方式
语法:http://网址域名/Home/Index/index/参数名/参数值…
例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:
http://www.weizai.com/Home/Index/index
【注意】
该路由形式是需要配置之后才可以使用的,不配置无法使用。
【配置方法】
(1)需要修改Apache的配置文件
去除配置文件中的rewrite模块前面的注释符:
同时需要修改Apache虚拟主机的配置
需要将AllowOverride设置为All
(2)将.htaccess文件复制到当前站点目录下:
此时配置完成,就可以使用第三个路由形式了。
兼容路由形式
语法:http://网址域名/index.php?s=/模块名/控制器名/方法名/参数名/参数值…
问:上述形式中,有几个参数?
答:参数只有1个,参数是s,因为没有&符号。
例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:
http://www.weizai.com/index.php?s=/Home/Index/index
7.控制器的创建
控制器是以文件的形式存在的,需要创建一个文件。
文件的命名规范(当前版本为例):控制器名(首字母大写)+Controller.class.php
文件里面需要遵循三个步骤:
(1)声明命名空间
(2)引入需要使用的类元素
(3)正式的声明类,并且根据需要来决定是否需要继承其他的类
例如:需要创建商品控制器,命名为Goods
文件命名:GoodsController.class.php
8.模型的创建
在ThinkPHP中,模型的本质也是一个类文件,所以其编写的要求基本上和控制器是一致的。
文件的命名规范:模型名(首字母大写)+Model.class.php
里面代码的三个步骤:
(1)声明命名空间
(2)引入需要使用的类元素
(3)正式的声明类,并且根据需要来决定是否需要继承其他的类
9.视图的创建
视图就是展示给用户看的模板。
存放位置是在对应模块下的View目录下。
例如:需要给Goods控制器对应的方法test,创建模板,则视图文件需要放到View/Goods/test.html。
如果需要在控制器中展示模板/视图文件,则需要在方法的最后调用display方法。
语法:
this−>display();this->display(‘模板文件名称’);//访问其他的模板文件
$this->display(‘控制器/方法’);//访问其他控制器下的模板文件
扩展:将方法中的变量分配到模板中使用的方法。
$this->assign(模板中的变量名,PHP中的变量);
在模板中展示:
10.ThinkPHP中的2种模式
在ThinkPHP中提供了两种模式(模式:不是设计模式)
调试模式/开发模式:是在开发中建议开启的模式。【默认的形式】
生产模式:在项目上线运行的时候建议开启的模式。
切换两个模式的方式需要配置一个配置项。在ThinkPHP中除了配置文件中有配置项,在其他的一些零星的文件中,也存在配置项。
针对两个模式的配置项存在于/index.php中。
配置项:APP_DEBUG
调试模式下的错误:
生产模式下的错误:
11.将现有模板文件与TP框架结合
具体实现步骤:
(1)复制模板文件到View指定目录
(2)复制css,js,img静态资源文件到系统指定目录
(3)把静态资源(css,js,img)文件的路径设置为常量信息(在index.php入口文件设置)
(4)在模板文件中引入静态资源(css,js,img)文件,路径相对入口文件设置
最好设置为绝对地址(相对工作站点虚拟主机目录的绝对地址)
为了后期模板维护方便,通过常量设置静态资源访问目录地址
(5)css文件本身的图片设置,其路径相对于css本身设置
12.创建后台分组页面
将现有的模板文件按照8的步骤与TP框架结合。
TP框架提供的常量:
http://网址/index.php/分组/控制器/操作方法/参数名/参数值…
MODULE:路由地址分组信息(http://网址/index.php/分组)
CONTROLLER:路由地址控制器信息(http://网址/index.php/分组/控制器)
ACTION:路由地址操作方法信息(http://网址/index.php/分组/控制器/操作方法)
SELF:路由地址的全部信息(http://网址/index.php/分组/控制器/操作方法/参数名/参数值…)
MODULE_NAME:分组名称
CONTROLLER_NAME:控制器名称
ACTION_NAME:操作方法名称
这些常量可以直接使用,不用加任何php代码。
13.细节处理
13.1配置文件介绍
(1)ThinkPHP/Conf/convention.php 系统主要配置文件
(2)shop/Common/Conf/config.php 当前shop项目的配置文件
(3)shop/Home/Conf/config.php 当前shop项目Home分组下的配置文件
以上三个配置文件,若存在同名的配置变量,后者覆盖前者。
系统中并不是所有的配置参数都在convention.php文件中。
(1)大部分是在convention.php中定义
(2)在Behavior行为文件里边有定义一部分(例如:SHOW_PAGE_TRACE)
(3)在框架的代码角落里边有零星的一点配置变量(例如:MODULE_ALLOW_LIST)
13.2设置默认分组
13.3框架的两种模式
开发模式和生产模式:
//设置为调试模式
define(‘APP_DEBUG’,True);
define(‘APP_DEBUG’,false);
开发模式(调试模式):
每次请求会加载每个应用程序文件,比较耗费资源,错误提示比较友好。
会自动清除common-runtime.php文件,会依次加载每个需要的文件
生产模式:
该模式比较节省资源,会把请求过程中一些通用程序文件给“编译”到一个文件里边(shop/Runtime/common-runtime.php),这样系统的每次请求加载文件数目就比较少(节省了许多文件打开、关闭功能)
错误信息模糊,不方便调试。
13.4开启smarty模板引擎
将页面的内容改为smarty模板可以解析的代码:
13.5smarty模板{}标记有冲突
{}与css或者js有冲突解决办法:
(1)在{}与内容中间加空格
(2)让{}的左右括号不在同一行
(3)设置literal标记,设置之后内部内容不会被smarty模板解析
(4)将{}这个左右标记进行替换
14.框架的执行流程(了解)
index.php–>./ThinkPHP/ThinkPHP.php–>Think/Think.php–>Think/App.class.php