Weekly(学员端、导师端)项目总结

项目需求:


本项目分为学员端和导师端

学员端功能:注册、登录、提交周报、请假、取消请假

导师端功能:登录、管理员创建导师帐号、查看周报、考勤汇总、清人汇总、学员检索


项目难点:


1,使用原生php实现MVC框架,并使用这个框架编写项目代码


2,如何使用php根据不同设备提供不同页面


3,兼容上个版本的数据库数据


4,导师端的三个汇总功能的数据库事务逻辑


5,如何得到'未提交'的状态,此状态在正常情况下不会存在于数据库中



解决方案:


1:主要使用requirespl_autoloadregister()REQUEST_URIcal_use_func_array()sql_autoload_register()五个方法实现MVC框架。

1)在项目根目录中的index.php中设置字符格式、时区、启用session,并require_once在system/core/ 目录中的CallFunction.php

2)在CallFunction.php中,使用$_SERVER['REQUEST_URI']获取到URI字符串,通过explode()将字符串分割成数组,根据规定的格式,取出其中代表类名、方法和参数的值

3)使用sql_autoload_register()自动加载 /application/controller/ 目录下的class文件

4)使用call_user_func_array()执行对应的方法

5)自定义框架自带方法,通过 ob_end_clean() 和 require_once 加载 /application/view/ 目录下的html文件。



2:在框架中定义父类,controller中的所有类都必须继承该父类,在父类中定义构造方法,通过

HTTP_USER_AGENT来判断设备类型,并赋值给父类的$terminal属性。然后再父类中定义view($view)方法,通

过 

require_once "./application/views/$this->class/$this->terminal/" . $view . '.php';

加载视图


3:简单粗暴,去查看了上个版本的代码,上个版本怎么往数据库存的,这个版本还怎么存。顺便吐槽一句,上个版本是连着html标签和部分无用信息一起存进去的,搞的现在取出来之后还得再切割字符串...


4:前期没能足够重视,基本就是纯靠想所有情况,然后一边测一边改SQL语句


5:在Admin类中定义attend()方法,使用for循环遍历从项目开始至今的所有周数,取出改周所有没提交周报的用户,然后编写SQL语句将其'未提交'的状态INSERT到周报表中。每次管理员通过Admin::login()登录成功后,都会在Admin::login()中调用attend()方法




总结:


这次项目可以说是第一次自己一个人完成一个项目的后台,并且第一次尝试搭建MVC框架,在部署上也顺带学

习到了部分nginx配置知识,可以说是受益颇多。

同时也充分认识到自己在架构能力上的不足:

首先是框架,一开始只是完成了一个通过URL调用方法的MVC的雏形,后面是根据功能的需求和测试结果,逐

步添加和完善功能的,部分导致部分代码需要重构。但是这个过程也加深了自己对框架功能的理解。

再就是在数据库方面,拿到需求后,没有先理清各部分功能之间的关系和影响,而是直接一个一个的写功能,导

致各功能之间对数据库的读取和写入存在冲突,功能做出来了,但是却花费了大量时间去测试和改SQL。




下一个阶段准备:


1,深入学习数据库

2,阅读CI框架源码

3,学习Nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值