我是PHP和设计模式的初学者。我在一个包含javascript和php的应用程序中实现用例控制器时遇到了问题。我正在努力做一个学生档案管理员的项目。我有一个"上传分数"的用例,老师上传学生某一特定部分的分数。在这个用例中,我已经将系统操作的责任分配给了一个名为UploadMarksEventHandler的类。我只提到了方法和属性,它们还不应该产生输出。这是代码:
class UploadMarksHandler{
private $section;
private $central_storage;
private $students = array();
private $cookie_name;
private isSelectSection = false;
function __construct(){
}
function login($teacher_id, $password){
$password_temp=$this.centr/al_storage.getTeacherPassword($teacher_id);
if($password_temp==$password){
//set cookies
setcookie($teacher_id, $password, time()+(60), "/");
}
else{
echo "incorrect password";
}
}
function selectSection($section){
//check cookies
$this->section=$this->central_storage.getSection($section);
$this->is_section_selected=true;
$this->students=$this->central_storage.getStudents($this->section);
}
function uploadMarks($student_id, $marks){
//check cookies
}
function display_students(){
//check cookies
//display $this->students
}
function endUseCase(){
//logout
//destroy central storage object
//destroy section object
//destroy students object
//destroy object
}
}
?>
上面的代码用于应用程序逻辑层。UI层的用户将执行诸如登录($teacher_id,$password)、uploadMarks($student_id,$marks)等操作。这些操作中的每一个都作为控制器类UploadMarksHandler的职责。问题是,用户将从UI层生成操作,我计划在jquery中对其进行编码。假设用户按下浏览器上名为"Upload Marks"的按钮。为此,我将使用AJAX创建一个UploadMarksHandler对象。我将在main.php文件中进行此操作,该文件将用于将UI层映射到应用程序逻辑层。
$upload_marks = new UploadMarksHandler(); //this is in main.php, which is called through AJAX
在实例化了负责处理"upload marks"用例的$upload_marks对象之后,我的应用程序应该在UI层中侦听下一个系统操作。假设用户按下一个名为"Login"的按钮。现在,当控件从客户端移回服务器端时,我的$upload_marks对象将被删除,因此其状态将丢失。
我已经搜索了关于在PHP中应用MVC和控制器的信息,但没有发现我的问题。我应该使用MVC框架吗?感谢您的帮助。
假设用户按下一个名为"Login"的按钮。现在,当控件从客户端移回服务器端时,我的$upload_marks对象将被删除,因此其状态将丢失。
当用户触发UploadMarks事件时,创建一个跟踪该工作流状态的对象。在请求结束时,将工作流的当前状态持久保存到数据库中。每当用户再次单击UploadMarks时,获取状态并恢复工作流。
我已经搜索了关于在PHP中应用MVC和控制器的信息,但没有发现我的问题。我应该使用MVC框架吗?
关于MVC,我能给你的最好建议是不要担心它。MVC在最近几年受到了很多不必要的关注。当它只是你应用程序中的一个小细节时,它被炒作得像圣杯一样。