这是一个关于带有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调用的最佳方法是什么? 这是最佳做法吗?
答案 0 :(得分:5)
如果你的目标是专门实现类似MVC的东西,那么你完全失败了。此设置与MVC完全无关。说实话,你似乎对解决类似的问题缺乏经验。
如果这是您第一次尝试在代码中应用Separation of Concerns,那么这是合适的。虽然,我仍然不会将这种类型的代码放在生产中。
我对你的建议是:暂时停止尝试“做MVC”,而是专注于提高你对网络开发的一般理解。
您应该谷歌以下PHP主题: