PHP OOP和AJAX:如何处理Class中的服务器端?

Pok*_*oku 2 php ajax

我正在努力将我的标准PHP项目转换为OOP,但我遇到了关于如何使用PHP类处理AJAX调用的问题.我对我现在这样做的方式不满意.我有一个TillAjax.php文件,我从一个AJAX调用的TillUI.php文件中调用它.

在TillAjax.php文件中,我这样做是为了获取从ajax调用传递的信息.

$till = new Till();
if(isset($_POST['data']))
    $till->doStuff($_POST['data']);
Run Code Online (Sandbox Code Playgroud)

我认为这会破坏OOP.

我使用过ASP.NET MVC,在这里可以调用控制器中的特定操作,而不必检查post值.所以我想知道是否有更聪明的PHP方法来解决上述问题?

Kaz*_*zar 6

我使用的方法是拥有一个Ajax类.

你的php文件调用Ajax::Process($_GET['handle']),其中'handle'包含静态类方法的名称,所以也许'Till :: Process'.Ajax类根据允许的函数列表(即允许通过ajax call_user_func_array调用的函数)检查函数,然后用于调用函数(我的代码使用$ _POST的内容作为参数传递给函数) .该函数的返回自动编码为json并输出到客户端.

这意味着您的目标php文件如下所示:

<?php

//File: ajax.php

include ("Ajax.php");

Ajax::Process($_GET['handle']);

?>
Run Code Online (Sandbox Code Playgroud)

我觉得这很简单.

然后你可以有这样的javascript(jquery):

$.get('ajax.php?handle=Till::Process', {}, function(result) {
  //called on page response
});
Run Code Online (Sandbox Code Playgroud)

那么结果现在包含从PHP方法Till :: Process返回的任何数据.