Я довольно опытный программист, впервые столкнувшийся с PHP и Ajax, и у меня возникли проблемы с тем, как включить объектно-ориентированный PHP в мой ajax webapp.
У меня есть страница администратора (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 ошибочно.
В любом случае, если кто-то может понять, что я пытаюсь сделать, я был бы признателен за помощь!
подумайте о каждом вызове ajax как о отдельном запросе. если в жизненном цикле конкретного запроса вы не создали экземпляр вашего ContentManager, объект не существует. Если вы хотите использовать один объект между несколькими запросами, сериализуйте его на сеанс и десериализуйте его на ранней стадии жизненного цикла запроса.
Я не знаю, если это то, что вам нужно, ну, вот и все. Имейте один файл PHP для обработки всех представлений формы. Например: proc.php или что-то подобное в ACTION = "proc.php". Внутри proc.php, в зависимости от представленных параметров, выполняйте вызовы функций. Еще одна вещь, которую вы, вероятно, должны сделать, – создать экземпляр класса (объекта) в конце самого файла класса, избегая необходимости проверять каждый раз, если объект был создан или нет. Используйте global $objectname
перед global $objectname
функций объекта, если это необходимо.