1

我是 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 层的用户将执行诸如 login($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 对象后,我的应用程序应该在 UI 层监听下一个系统操作。假设用户按下一个名为“登录”的按钮。现在,当控件从客户端移回服务器端时,我的 $upload_marks 对象将被删除,因此其状态将丢失。

我搜索了有关在 PHP 中应用 MVC 和控制器的信息,但没有发现关于我的问题的运气。我应该使用 MVC 框架吗?任何帮助表示赞赏。

4

1 回答 1

0

假设用户按下一个名为“登录”的按钮。现在,当控件从客户端移回服务器端时,我的 $upload_marks 对象将被删除,因此其状态将丢失。

当用户触发 UploadMarks 事件时,创建一个跟踪该工作流状态的对象。在请求结束时,将工作流的当前状态保存到数据库中。每当用户再次单击 UploadMarks 时,获取状态并恢复工作流程。

我搜索了有关在 PHP 中应用 MVC 和控制器的信息,但没有发现关于我的问题的运气。我应该使用 MVC 框架吗?

关于 MVC,我能给你的最好建议就是不要担心它。近年来,MVC 引起了很多不必要的关注。当它实际上只是您应用程序中的一个小细节时,它被大肆宣传就像是圣杯一样。

于 2015-05-02T16:09:23.073 回答