PHP OOP и AJAX: как работать с сервером в классе? - PullRequest
2 голосов
/ 04 октября 2009

Я работаю над преобразованием моего стандартного проекта PHP в ООП, но наткнулся на стену о том, как обрабатывать вызовы AJAX с помощью PHP-классов. Я не доволен тем, как я делаю это сейчас. У меня есть файл TillAjax.php, который я вызываю из файла TillUI.php из вызова AJAX.

В файле TillAjax.php я делаю это, чтобы получить информацию, переданную из вызова ajax.

$till = new Till();
if(isset($_POST['data']))
    $till->doStuff($_POST['data']);

Я думаю, что это разрушает ООП.

Я работал с ASP.NET MVC, и здесь можно вызывать определенное действие в контроллере без необходимости проверять почтовое значение. Итак, я хочу знать, есть ли более разумный способ PHP решить вышеуказанную проблему?

Ответы [ 2 ]

6 голосов
/ 04 октября 2009

Для этого я использую класс 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']);

?>

Что я думаю довольно просто.

Тогда у вас может быть javascript, который выглядит следующим образом (jquery):

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

Итак, теперь результат содержит все данные, возвращаемые из метода php Till :: Process.

1 голос
/ 04 октября 2009

Рассматривали ли вы использование фреймворка PHP MVC, например CodeIgniter , CakePHP , Kohana и т. Д.? Они позволят вам направлять запросы к определенным методам контроллера. Это будет намного более чистое решение, если вы захотите перейти на одну из этих платформ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...