没有框架的OO PHP + Ajax

The*_*DER 5 php ajax model-view-controller

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

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

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

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

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

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

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

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

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

Daf*_*aff 1

正如您已经说过的,您实际上并不需要 PHP 框架,也不需要构建自己的 MVC 实现(特别是如果您使用 JSON 或 XML)。基本上,您对如何构建面向对象模型非常自由,因此您的想法不一定是错误的。

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

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

您可能希望在注册过程中处理一些 $_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());

?>
Run Code Online (Sandbox Code Playgroud)