一、昨日回顾
1. 知识回顾
mvc的三大组件是什么?
M:model 模型
V:view 视图
C:Controller 控制器
mvc的三大组件分别代表什么意思?
M:专门用来操作数据表的
V:专门用来展示视图模板的
C:专门用来处理业务逻辑,比如说什么时候该调用模型操作数据,什么时候该调用视图展示模板,都是由控制器里来处理。
构建实例化函数
2. 昨日反馈
二、知识路径
web项目开发流程介绍
需求分析
功能分析
ER图设计
表设计
项目部署
项目实现
实现后台用户管理系统
封装验证码工具类
==目标:能够设计项目所需的表、能够部署自主框架、能够实现后台用户管理系统==
三、今日课程内容:博客项目
1. web项目开发流程介绍
1)制定计划:博客项目(blog31) 开发周期:4天
2)需求分析:功能分析 ER图设计
3)软件设计:项目环境 表设计
4)程序编写
5)软件测试
6)运行维护
2. 需求分析
功能分析
- 后台用户管理系统;
- 后台分类管理系统;
- 后台博文管理系统;
- 评论管理系统;
- 后台登陆和七天免登录;
- 前台首页;
- 前台注册和登陆功能;
- 前台博客文章详情页;
ER图设计
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。
专业的ER图工具:Viso和Power Designer
==实体== ==》表:矩形表示
==属性== ==》表字段:椭圆
==关系== ==》表与表的关系:菱形(1:1表示1对1关系;1:n表示1对多关系;m:n表示多对多关系)
博客项目的ER关系图如下:
3. 表设计
1 | drop database blog31; |
4. 项目部署
将code/mvc目录改名为blog31,
下图这个mvc目录:
改名为blog31:
配置一个基于域名虚拟主机,域名为www.blog31.com
在httpd-vhosts.conf文件中增加如下图所示的虚拟主机配置项:
修改hosts文件,
重启apache,测试访问效果:
访问效果为:
能够看到上图,则说明部署成功。
5. 项目实现
实现后台用户管理系统
实现列表页
将code/templates/admin目录中如下图所示的目录复制一份,
转移拷贝到code/blog31/app/admin/view目录中,
在blog31/app/admin/controller目录中创建一个名为UserController.class.php的文件,
在blog31/app/admin/controller/UserController.class.php中构建如下代码,展示三个页面,
测试访问后台用户管理系统列表页
进一步做调整,将后台模板使用到的资源文件全部转移进项目中,
在blog31/public目录中创建一个名为admin的目录,专门保存后台的资源文件,
复制code/templates/admin/libs目录下的所有文件,如下图所示,
转移拷贝到blog31/public/admin目录中,
调整blog31/app/admin/view/User/userIndex.html中引入资源文件的路径,
在blog31/conf/conf.php中增加本网站域名配置项,
然后在blog31/app/admin/view/User/userIndex.html使用配置项URL的值来引入配置文件,
上图中替换的是所有图片文件引入路径,截取不全,实际替换的内容以blog31/app/admin/view/User/userIndex.html中的为准。
再次测试访问后台新闻管理系统列表页,
在blog31/app/model目录中创建UserModel.class.php文件,
内容如下:
调整blog31/conf/conf.php中PDO配置项的默认选择的数据库名,
在blog31/app/admin/controller/UserController.class.php中showIndex方法里渲染模板之前调用模型查询数据,
然后在blog31/app/admin/view/User/userIndex.html中回显查询得到的用户数据,
测试访问后台用户管理系统列表页:
实现添加页
访问后台用户管理系统添加页,
调整blog31/app/admin/view/User/userAdd.html中引入资源文件的路径,将”../libs”全部替换为”{C(‘URL’)}/public/admin”,如下图所示,代码截取不全,以实际文件中的代码为准,
调整blog31/app/admin/view/User/userAdd.html中的form表单域各项的值,
在blog31/app/admin/controller/UserController.class.php中创建一个处理添加用户的方法,adh方法,
测试添加用户使用效果:
在添加表单页面构建数据,点击提交,
提交后的效果:效果为添加成功,说明功能实现OK。
实现编辑页
访问后台新闻管理系统编辑页:
修改blog31/app/admin/view/User/userIndex.html中编辑按钮的链接:
调整blog31/app/admin/view/User/userEdit.html中引入资源文件的路径,将”../libs”全部替换为”{C(‘URL’)}/public/admin”,如下图所示,代码截取不全,以实际文件中的代码为准,
调整blog31/app/admin/view/User/userEdit.html中form表单里的代码,
在blog31/app/admin/controller/UserController.class.php中创建updh方法,代码如下:
测试使用效果:
点击进入编辑也,如下图所示:
修改数据,
点击更新,
跳回到更新页面:
密码也是被改变了的,如下图所示:
说明编辑功能实现OK。
6. 全天总结
项目中的建表部分:
如果某字段是需要保存时间,一般在PHP的项目中给int数据类型;
如果某字段需要保存状态类型的值,使用tinyint会更加好;
如果某字段保存的数据,我们可以预期的很准确,比如说手机号码,通常就是11位,但是我们在项目中一般会采取宁大不小的原则,给11位以上的值,比如给varchar(15);
在构建字段的时候,我们一般都会给字段设置default默认值,如果不设置默认值,则今后这个字段无论是否需要添加数据,都必须指定上值。
项目开发部分:
我们使用框架进行开发,一般程序开发人员从模板入手,先尝试展示出模板页面的效果,然后再考虑是否需要调用模型操作数据库的问题,所以我们通常在MVC框架中,1)首先会将模板页面转移进项目目录;2)然后会创建控制器类,构建方法调用视图展示模板页面;3)调试模板页面展示的效果;4)以上都成功之后,如果没有模型则需要创建模型,如果有模型则直接去考虑调用模型操作数据;