2010-06-21 3 views
5

Я собираюсь написать сайт бронирования с использованием php и ajax, и я действительно не могу понять, как смешивать эти два инструмента со строгим объектно-ориентированным дизайном.OO PHP + Ajax без рамки

Я был использован для совершения вызова с использованием ajax на веб-странице php, которая возвращает правильный набор значений (string, xml, json) процедурным способом.

С объектно-ориентированным программированием, как он должен работать?

Самое простое решение, которое я могу представить, - это вызвать через ajax страницу php, которая должна только создать новый объект правого класса, а затем сделать эхо на результат простого вызова с полученными данными, но это не означает, t выглядят очень ...

Например, чтобы реализовать функцию register, я должен сделать ajax-вызов на веб-странице register.php, которая, в свою очередь, создаст новый объект регистрации r, а затем просто вызовет r.register() с правильными данными.

Есть ли лучшее решение этой проблемы?

Я хочу указать, что я не могу использовать фрейм-фрейм, потому что это дидактический проект, и у меня есть это правило, которое я должен уважать.

Другая спецификация: я прочитал много учебников, в которых описывается, как написать свою собственную инфраструктуру mvc, но это, похоже, является излишним для моей проблемы.

Благодарим за помощь, и каждая идея будет оценена по достоинству.

ответ

1

Как вы уже сказали, вам не нужна фреймворк PHP и вам не нужно создавать собственную реализацию MVC (особенно если вы работаете, например, с JSON или XML). В принципе, вы довольно свободны в том, как делать свою модель OO, поэтому ваша идея не обязательно ошибается.

Некоторые анти модели OO Я видел людей, использующих в PHP:

  • Использование глобальных переменных в классах
  • Создание классов без члена переменных в результате вызовов метода такое же, как в 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()); 

?> 
+0

Это именно то, о чем я думал. Возможно, управление сеансом может быть немного проблематичным таким образом, потому что оно становится перекрестной проблемой. – TheSENDER

+0

Я думаю, вы не сможете полностью избавиться от необходимости иметь дело с перекрестными проблемами. Что касается безопасности и управления сессиями, шаблон MVC работает достаточно хорошо, потому что вы всегда можете сделать это в своем контроллере, прежде чем что-либо будет сделано. – Daff

+0

Но я думаю, что модель кода, который вы опубликовали, нужно немного изменить. Перед проверкой ввода (очевидно, не в регистрационной части), я думаю, что я должен проверить срок действия сеанса, и поэтому почти каждому конструктору объекта контроллера необходимо будет принять аргумент сеанса. Я прав? – TheSENDER

1

Там нет никаких оснований для создания каких-либо классов, если все, что вы делают вызов нескольких несвязанных функций php без состояния.

+0

Мне нужно управлять сессиями и базами данных, я предполагаю, что это будет проще, если я буду использовать подход с полным оо. – TheSENDER