没有框架的OO PHP + Ajax

时间:2010-06-21 10:00:01

标签: php ajax model-view-controller

我打算使用php和ajax写一个预订网站,我真的无法想象如何将这两个工具与严格的面向对象设计混合在一起。

我习惯使用ajax调用php网页,以一种程序方式返回正确的值集(string,xml,json)。

使用面向对象编程,它应该如何工作?

我能想到的最简单的解决方案是通过ajax调用一个php页面,该页面应该只实例化一个正确类的新对象,然后对收到的数据进行简单调用的结果进行回显,但这不是看起来非常......

例如,为了实现寄存器功能,我应该对register.php网页进行ajax调用,该网页反过来将实例化一个新的Registration对象r,然后简单地用正确的数据调用r.register()。 / p>

这个问题有更好的解决方案吗?

我想指定我不能使用任何php框架,因为它是一个教学项目,我有这个规则,我应该尊重。

另一个规范:我已经阅读了很多描述如何编写自己的mvc框架的教程,但这样做对我的问题来说似乎有些过分。

感谢您的帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

正如您已经说过的,您并不真正需要PHP框架,也不需要构建自己的MVC实现 (特别是如果您使用的是JSON或XML)。 基本上你对如何做你的OO模型非常自由,所以你的想法不一定是错的。

我见过人们在PHP中使用的一些OO反模式:

  • 在类
  • 中使用全局变量
  • 创建没有成员的类 导致方法调用的变量 与生产风格相同
  • 直接访问$ _GET,$ _POST等 在课堂上
  • 回应html输出(imho这应该 在视图模板中完成)

您可能希望为注册过程处理某些$ _POST变量的示例 并返回JSON成功消息:

<?php

class Registration
{
    private $_data;

    public function __construct($registrationdata)
    {
        $this->_data = $registrationdata;
    }

    public function validate()
    {
        // ...
    }

    public function register()
    {
        // ...
        if($this->validate())
            return array("registered" => true, "username" => $this->_data["username"], 
                "message" => "Thank you for registering");
        else
            return array("registered" => false, "username" => $this->_data["username"],
                "message" => "Duplicate username");
    }
}

$reg = new Registration($_POST);
echo json_encode($reg->register());

?>

答案 1 :(得分:1)

如果您所做的只是调用几个不相关的无状态php函数,则没有理由创建任何类。