PHP,jQuery和Ajax面向对象

时间:2010-03-30 18:45:03

标签: php jquery ajax oop

我是一位经验丰富的程序员,这是第一次了解PHP和Ajax,我在如何将面向对象的PHP合并到我的ajax webapp中时遇到了一些麻烦。

我有一个管理页面(admin.php),它将从XML文件加载和写入信息(info.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(){
 }    
}

我在admin.php中创建了ContentManager对象,如此

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

所以现在我想使用AJAX来允许用户使用类似接口(ajax_handler.php)通过ContentManger应用程序从XML文件中检索信息

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

  }else if()
  }
  ...
 ?>

我理解如果我不使用对象,这将是如何工作的,即,根据.post请求中的变量,hander php文件会执行某个操作,但是在我的设置中,我无法看到我怎么能获取对我在ajax_handler.php文件中的admin.php中创建的ContentManager对象的引用?也许我对php对象范围的理解是有缺陷的。

无论如何,如果有人能够理解我想要做的事情,我会感激一些帮助!

2 个答案:

答案 0 :(得分:1)

将每个ajax调用视为单独的请求。如果在特定请求的生命周期中您尚未实例化您的ContentManager,则该对象不存在。如果您想在多个请求之间使用单个对象,请将其序列化为会话,并在请求生命周期的早期对其进行反序列化。

答案 1 :(得分:0)

我不知道这是否是你所需要的,好吧,这里有。有一个PHP文件来处理所有表单提交。例如:proc.php或ACTION =“proc.php”中的类似内容。在proc.php中,根据提交的参数,进行函数调用。您应该做的另一件事是在类文件本身的末尾创建类(对象)的实例,从而无需每次都检查对象是否被实例化。 如有必要,请在调用对象函数之前使用global $objectname