WEB开发网
开发学院数据库DB2 使用 DB2 pureXML 和 PHP 构建 Support Knowledge... 阅读

使用 DB2 pureXML 和 PHP 构建 Support Knowledge Base(上)

 2010-02-25 00:00:00 来源:WEB开发网   
核心提示: 应用程序类Knowledge Base 应用程序有两个主要的组件:类别和文章,每篇文章属于(且仅属于)一个类别,使用 DB2 pureXML 和 PHP 构建 Support Knowledge Base(上)(7),并且,每篇文章可能有零到多个评论,要获得完整的类定义,可从 下载 部分下载源代

应用程序类

Knowledge Base 应用程序有两个主要的组件:类别和文章。每篇文章属于(且仅属于)一个类别。并且,每篇文章可能有零到多个评论,以及零到多个相关的评分。在本节中,您将创建两个 PHP 类(Category 和 Article),这两个类将包含可对这些组件执行的所有函数。

创建 Category 类

要创建的第一个类是 Category 类。这个类包含用于创建 Category 对象的实例变量和方法。每个类别有一个 $id 变量,保存在数据库的 int 列中,以及一个 name 变量,保存在名为 data 的 XML 列中。对于数据库中类别表的每一行,都有一个 XML 文档存储在数据列中,并使用如清单 3 所示的格式。

清单 3. 针对类别表中的行的 XML

<category> 
  <name>Category Name</name> 
</category> 

注意:您可能想知道为什么这里需要外部的 <category> 标记。在本例中其实不需要使用它们,但是如果您想在以后添加更多数据字段,那么您需要将其包含到 <category> 标记中,因为 DB2 pureXML 要求在其 XML 文档中包含一个外部节点。

Category 类有多个函数。它使用 getter 和 setter 方法处理类中已定义的属性,用 save 函数将新的和现有的类别保存到数据库,用 delete 函数删除类别,以及用其他函数检索有关一个或多个类别的信息。

清单 4 包含来自 category.php 文件的一个片段,定义了 Category 类。要获得完整的类定义,可从 下载 部分下载源代码。将 category.php 文件保存到项目的 classes 子目录中。

清单 4. category.php 片段

... 
  function save() { 
    $sql = ""; 
    if($this->id) 
      $sql = "UPDATE category SET data = (xmlparse(document 
 '<category><name>".$this->db->safe_no_html($this->name, 
false)."</name></category>')) WHERE id = $this->id"; 
else $sql = "INSERT INTO category(data) VALUES((xmlparse(document 
'<category><name>".$this->db->safe_no_html($this->name, 
false)."</name></category>')))"; 
 
    $result = $this->db->query($sql); 
    if($result) return true; 
    else return false; 
  } 
 
  function delete() { 
    $sql = "DELETE FROM category WHERE id = $this->id"; 
    $result = $this->db->query($sql); 
    if($result) return true; 
    else return false; 
  } 
 
  function getAllCategories() { 
    $sql = 'SELECT c.id, x.name FROM category c, ' 
      .' XMLTABLE(\'$d/category\' PASSING c.data AS "d" ' 
      .' COLUMNS name VARCHAR(200) PATH \'name\') AS x ' 
      .' ORDER BY x.name'; 
    $result = $this->db->query($sql); 
    $rows = array(); 
    if($result) { 
      while($row = $this->db->get_row($result)) { 
        $rows[] = array($row[0], $row[1]); 
      } 
    } 
    return $rows; 
  } 
...   

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:使用 DB pureXML

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接