<?php
 
  
 
  /**------------------------------------------------------------------------------
 
   * File:         example.php
 
   * Description:  usage example for dom-abstraction library 
 
   * Version:      1.0
 
   * Author:       Richard Keizer
 
   * Email:        ra dot keizer at gmail dot com
 
   *------------------------------------------------------------------------------
 
   * COPYRIGHT (c) 2011 Richard Keizer
 
   *
 
   * The source code included in this package is free software; you can
 
   * redistribute it and/or modify it under the terms of the GNU General Public
 
   * License as published by the Free Software Foundation. This license can be
 
   * read at:
 
   *
 
   * http://www.opensource.org/licenses/gpl-license.php
 
   *
 
   * This program is distributed in the hope that it will be useful, but WITHOUT 
 
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
 
   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
 
   *------------------------------------------------------------------------------
 
   *
 
   *
 
   * Finally i figured out a way to extend php's DOMElement in a proper way.
 
   * This example uses the W3C bookstore example.
 
   * It loads the xml and automatically binds true DOMElement extends to each element.
 
   * Finally we'll do a manual insert of a new book
 
   *
 
   */
 
  
 
  error_reporting(E_ALL);
 
  ini_set('display_errors', 1);
 
 
  include_once 'extendeddom.php';
 
  
 
  
 
  class title extends extDOMElement {
 
    public function setLanguage($lang) {
 
      $this->setAttribute('lang', $lang);
 
      return $this;
 
    }
 
  }
 
  
 
  class cover extends extDOMElement {}
 
  
 
  class year extends extDOMElement {}
 
  
 
  class price extends extDOMElement {}
 
  
 
  class author extends extDOMElement {}
 
  
 
  class book extends extDOMElement {
 
    
 
    public function setTitle($text, $lang) {
 
      $this->createElement('title', null, $text)->setAttribute('lang', $lang);
 
      return $this;
 
    }
 
    
 
    public function setCover($covertype) {
 
      $this->setAttribute('cover', $covertype);
 
      return $this;
 
    }
 
    
 
    public function setPrice($amount) {
 
      $this->createElement('price', null, $amount);
 
      return $this;
 
    }
 
    
 
    public function setYear($year) {
 
      $this->createElement('year', null, $year);
 
      return $this;
 
    }
 
    
 
    public function addAuthor($name) {
 
      $this->createElement('author', null, $name);
 
      return $this;
 
    }
 
    
 
    public function setCategory($text) {
 
      $this->setAttribute('category', $text);
 
      return $this;
 
    }
 
  }
 
  
 
  class bookstore extends extDOMElement {
 
    
 
    public function addBook($category, $cover, $title, $lang, $author, $year, $price) {
 
      $this->createElement('book')->setCategory($category)
 
                                  ->setCover($cover)
 
                                  ->setTitle($title, $lang)
 
                                  ->addAuthor($author)
 
                                  ->setYear($year)
 
                                  ->setPrice($price);
 
    }
 
  }
 
  
 
  
 
 
  
 
  
 
  $doc = new extDOMDocument();
 
  $doc->loadXML(file_get_contents('http://www.w3schools.com/dom/books.xml'));
 
  $xpath = new DOMxpath($doc);
 
  $bookstore = $xpath->query('/bookstore')->item(0);
 
  
 
  //var_dump(is_subclass_of($bookstore, 'DOMElement'));       // uncomment this to prove that this is a true DOMElement extend!
 
  
 
  $bookstore->addBook('SF (comedy)','paperback','The Hitchhiker\'s Guide to the Galaxy', 'en', 'Douglas Adams', '1979', '7.99');
 
  echo $doc->saveXML();
 
 
  
 
  
 
  
 
  
 
  
 
  
 
 
 
 |