PHP, jQuery и Ajax объектная ориентация - PullRequest
2 голосов
/ 30 марта 2010

Я довольно опытный программист, впервые разбирающийся в PHP и Ajax, и у меня возникли некоторые затруднения с выяснением того, как включить объектно-ориентированный PHP в мое веб-приложение ajax.

У меня есть страница администратора (admin.php), которая будет загружать и записывать информацию (info.xml) из файла XML в зависимости от выбора пользователя формы на странице администратора. Я решил использовать объект (ContentManager.php) для управления загрузкой и записью файла XML на диск, т. Е.

class ContentManager{

 var $xml_attribute_1
 ...

 function __construct(){
    //load the xml file from disk and save its contents into variables
    $xml_attribute = simplexml_load_file(/path/to/xml)
 }
 function get_xml_contents(){
    return xml_attribute;
 }
 function write_xml($contents_{
 }
 function print_xml(){
 }    
}

Я создаю объект ContentManager в admin.php примерно так

<?php
include '../includes/CompetitionManager.php';
$cm = new CompetitionManager()
?>
<script>
  ...all my jquery
</script>
<html>
  ... all my form elements
</html>

Итак, теперь я хочу использовать AJAX, чтобы позволить пользователю извлекать информацию из файла XML через приложение ContentManger, используя интерфейс (ajax_handler.php), подобный этому

<?php
  if(_POST[]=="get_a"){

  }else if()
  }
  ...
 ?>

Я понимаю, как это будет работать, если я не буду использовать объекты, то есть файл php hander будет выполнять определенное действие в зависимости от переменной в запросе .post, но с моей установкой я не вижу, как я могу получить ссылку на объект ContentManager, который я создал в admin.php в файле ajax_handler.php? Возможно мое понимание области объекта php неверно.

В любом случае, если кто-то сможет понять, что я пытаюсь сделать, я был бы признателен за помощь!

Ответы [ 2 ]

1 голос
/ 30 марта 2010

воспринимайте каждый вызов ajax как отдельный запрос. если в жизненном цикле определенного запроса вы не создали экземпляр ContentManager, объект не существует. Если вы хотите использовать один объект между несколькими запросами, сериализовать его в сеанс и десериализовать его в начале жизненного цикла запроса.

0 голосов
/ 30 марта 2010

Я не знаю, если это то, что вам нужно, ну, вот и все. Есть один файл PHP для обработки всех представлений формы. Например: proc.php или что-то подобное в ACTION = "proc.php". Внутри proc.php, в зависимости от представленных параметров, выполняются вызовы функций. Еще одна вещь, которую вы, вероятно, должны сделать, это создать экземпляр класса (объекта) в конце самого файла класса, избегая необходимости каждый раз проверять, был ли создан объект или нет. При необходимости используйте global $objectname перед вызовом функций объекта.

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