使用AJAX调用的MVC模式

时间:2016-03-29 23:17:08

标签: php jquery ajax

这是一个关于带有ajax调用的php mvc模式的奇怪问题。目的是制作更好,更动态的网络应用程序。让我解释一下:

当我学习php时,我特意使用了这种模式:

model.php

<?php
class myClass {

    private $attrOne;
    private $attrTwo;

    public function getAttrOne() {
        return $this->attrOne;
    }

    public function setAttrOne($attrOne) {
        $this->attrOne = $attrOne;
    }

    public function getAttrTwo() {
        return $this->attrTwo;
    }

    public function setAttrTwo($attrTwo) {
        $this->attrTwo = $attrTwo;
    }

    // ----------------------------------------------------

    public function doSelect() {
        //some code
    }

    public function doInsert() {
        //some code
    }

    public function doUpdate() {
        //some code
    }

    public function doDelete() {
        //some code
    }

}

Controller.php这样

<?php

require "../models/model.php";

if(isset($_POST['action'])) {
    $action = $_POST['action'];
    if(is_callable($action)) {
        $action();
    }
}

function registerSomething(){
    $model = new myClass();
    $model->setAttrOne($_POST['attrOne']);
    $model->setAttrTwo($_POST['attrTwo']);
    $return = $model->doInsert();
    echo $return;
}

function registerSomething2(){
    // more app logic code and other stuff
}

view.php - &gt;这是一个带有php扩展名的纯html文件

<div id="result"></div>
<form id="register" role="form" >
    <input type="text" id="attrOne" name="attrOne"/>
    <input type="text" id="attrTwo" name="attrTwo"/>
</form>

<script src="script.js" type="text/javascript"></script>

和script.JS

$('#register').submit(function() {
    var action = 'registerSomething';
    $.ajax({
    data: $(this).serialize() + '&action='+action,
    url: '../controlllers/controller.php',
    type: 'POST',
    success: function(response) {
            $('#result').html(response);
        }
    })
    return false;
})

那么,您如何看待这种模式?这种模式有效吗? 在php中使用正确的mvc模式进行ajax调用的最佳方法是什么? 这是最佳做法吗?

1 个答案:

答案 0 :(得分:5)

如果你的目标是专门实现类似MVC的东西,那么你完全失败了。此设置与MVC完全无关。说实话,你似乎对解决类似的问题缺乏经验。

如果这是您第一次尝试在代码中应用Separation of Concerns,那么这是合适的。虽然,我仍然不会将这种类型的代码放在生产中。

我对你的建议是:暂时停止尝试“做MVC”,而是专注于提高你对网络开发的一般理解。

您应该谷歌以下PHP主题:

  • url routing
  • 自动加载和PSR4
  • 活动记录和数据映射器模式之间的区别
  • 请求抽象