- 3
- 0
- 约3.84千字
- 约 27页
- 2018-05-02 发布于河南
- 举报
韩顺平php从model1到分层再到mvc并使用smarty笔记
Model1
数据库 empmanage
添加数据到emp表
添加数据到admin表
创建empManage项目
用户管理系统框架图
第一次不到数据库的简单验证
Login.php页面
loginProcess.php
Empmain.php
302代表重定向
第一次请求登陆处理界面 登陆处理界面又重定向到结果页面 这一共发了两次请求
发出两个请求 服务器端就会启动两个进程
第二次改进: 从数据库验证登陆
用户管理系统框架图
LoginProcess.php页面的修改部分
验证再修改 不区分是密码错误还是不存在该用户的写法:
最后要关闭资源 第一句是释放在内存中占用的空间 第二个是断开连接 如果多条语句查询使用一条连接效率是高的
EmpManage.php
第三次改进:model1模式雇员分页
在管理页面显示登录成功的用户名 在登陆处理页面获得的用户名 要在empmanage.php页面得到用户名 现阶段解决办法是在登录处理界面得到用户名 通过跳转传到empmanage.php界面
Loginprocess.Php
EmpManage.php 接收用户名
现要做一个雇员列表页面 当点击管理用户时跳到此处
Emplist.php 读取数据库 展示雇员列表
下面考虑分页显示我们的用户信息
至此empManage1.0结束
雇员管理系统 -分层模式【业务逻辑与界面分离】mv
测试数据量大时 是否可以满足用户相应快速需求
查询现在一共多少条记录
empList.php显示上一页下一页
指定跳转到某一页
一次跳转10页??
现有代码modle1存在的问题:
每个页面都有数据库连接 如果密码修改将要修改多个页面,太麻烦,代码重复
Emplist.php显示雇员列表信息 还有分页逻辑 界面和业务逻辑混合
不利于修通开发
Model1改为分层模式 界面用php 业务逻辑层用类 类中封装业务操作
界面层其实是web层 包括视图和控制器 下面那一层是model 最下面是数据层
建立Admin.class.php Admin.Service.php Emp.class.php Emp.Service.php 工具类 SqlHelper.class.php
把连接表给掉了 修改如上
对数据库返回的结果集放到一个数组里面,这样可以立即释放结果集
在SqlHelper里面 execute_sql(); 方法中不能关闭连接 因为一个创建一个对象,可能要执行好几个sql语句 关闭后后面sql无法执行
现在的代码执行sql返回结果集没有释放 需改进
业务逻辑不对数据库进行操作
要释放资源 关闭连接 此处合法返回的是一个true 可以返回用户名或者直接是一个对象包含更多信息
此处修改登录处理界面 使用adminService.class.php里面写的验证进行调用
以下要做分层模式中的分页分离
因为是针对emp表数据的分页 所以应该在EmpService.class.php封装 需要看界面层需要什么
为完成分页 emplist.php 需要$pagecount $res 需要两个变量 如何返回 怎么在一个函数返回两个 先用连个函数返回两个结果,再合并
如果各种表都统一分页??
界面调用该类的总共多少页函数的得到总共页数
此处之所以将释放资源和关闭连接注释掉是因为不能在此处做,因为释放掉后,界面就拿不到res 由于上面得到总页数关闭了连接,所以empService.class.php中当写分页函数时要重新new一个sqlHelper对象
以下是在雇员显示列表页面调用以上分页显示函数
在sqlHelper中dql语句中将资源放入数组,并释放资源,关闭连接在调用sqlHelper的类中 不在sqlHelper中,避免多次调用查询语句,还需建立多次连接 new多个sqlHelper
由于以上已经改成保存到数组,所以界面取结果也要换成数组读取方式
以下是整体分页
以下将分页封装通用
以上调用了两次函数 得到总页数和res结果
新建一个FenyePage.php 用于保存分页信息的类
、
以上第二个求总页数sql2执行没有释放资源 多了一个$ 对象属性赋值
以上操作完数据库没有进行关闭 sql多了一个where
以下将分页导航进行分装 要放到sqlHelper中 因为那个里面已经知道了fenyePage对象的所有信息
当然以上还有一个问题 就是连接指向的页面 也是写死了 以上对$navgate变量要放在外面声明一下
以上是empManage2.0版本实现了分层模式 将业务逻辑与界面分开 进行了分装 表的实体映射的对象主要用来保存数据 返回一个对象
MVC模式改进
原创力文档

文档评论(0)