26 Aralık 2009 Cumartesi

ADVTemplate Class

Reklam temamızı temsil etmesi amacı ile bir sınıf hazırladık. Bu sınıfın görevi, reklam temasının şemasını XML dosyasından okuyarak, gerekli bilgileri kendi içerisinde barındırmasını sağlamak. Reklam yöneticisi tarafından sürekli kullanılacağı ve bir probelme el vermemesi açısından, isReady fonksiyonu ile de hazır olup olmadığı test edilebilir kılındı. Dolayısı ile, herhangi bir memory overflow olayında veya geç okunma olayında kullanıcıya hata yerine sistem kendi kendini yenileyerek her defasında kesin sonuç geri döndürecek.
Hazırlamış olduğum sınıfın kodu şöyle:
/**
 * This class is used to represent a ADV Template to provide required fileld and values along
 * the reqistration process of the advertisement.
 * This class uses Domdocument object library to load xml schema file.
 * 
 * @author Behçet MUTLU
 * @copyright 2009 Adres Gezgini
 */

class ADVTemplate {
    
    private $name;
    private $author;
    private $datecreated;
    private $copyright;
    private $website;
    private $schema;
 private $isReady;
 private $xml;
 private $fields;
 private $values;

 /**
 * This is the general constructor of the ADV Template class that used to initialize the
 * ADV Template itself with given arguments.
 */
 public function __construct($schema = "", $values = array())
 {
  $this->schema = $schema;
        $this->isReady = false;
  
  if($this->schema != "")
   $this->load();
   
        if(sizeof($values) > 0)
            $this->setValues($values);
 }
    
    /**
 * This method is used to initialize the Template from the schema file and set the values
 */
 private function initialize()
 {
  $this->name = $this->xml["template"]["info"]["name"];
        $this->author = $this->xml["template"]["info"]["author"];
        $this->datecreated = $this->xml["template"]["info"]["datecreated"];
        $this->copyright = $this->xml["template"]["info"]["copyright"];
        $this->website = $this->xml["template"]["info"]["website"];
        $this->fields = $this->xml["template"]["fields"];
        
        foreach($this->fields as $fieldType)
        {
            if($fieldType != 0)
                foreach($fieldType as $field)
                {
                    if($field != 0)
                        $this->values[$field["@id"]] = isset($field["default"]) ? $field["default"] : "";
                }
        }
 }

 /**
 * This method is used to initialize the Template from the schema file and set the values
 */
 public function load()
 {
  $xml = new CArray2xml2array();

  if($xml->setXMLFile($this->schema))
        {
            $this->xml = $xml->toArray();
            
            $this->isReady = true;
            
            $this->initialize();
   debug("XML file, \"" . $xml->getXMLFile() . "\" loaded successfully.","pre");
  }
        else
  {
            $this->isReady = false;
   debug("Error: XML file could not be loaded!");
  }
 }
    
    /**
 * This method is used to learn if the xml file is ready or not
 */
 public function ready()
    {
        return $this->isReady;
    }
 
 
 /**
 * This method is used to set value of the class
 */
 public function setName($value) { $this->name = $value; }
 public function setAuthor($value) { $this->name = $value; }
 public function setWebsite($value) { $this->website = $value; }
 public function setDatecreated($value) { $this->datecreated = $value; }
 public function setCopyright($value) { $this->copyright = $value; }
 public function setSchema($value) { $this->schema = $value; }
    public function setFields($value) { $this->fields = $value; }
    public function setXml($value) { $this->xml = $value; }
    
    /**
 * This method is used to get value of the class
 */
 public function getName() { return $this->name; }
    public function getAuthor() { return $this->author; }
    public function getWebsite() { return $this->website; }
    public function getDatecreated() { return $this->datecreated; }
    public function getCopyright() { return $this->copyright; }
    public function getSchema() { return $this->schema; }
    public function getFields() { return $this->fields; }
    public function getXml() { return $this->xml; }
    
    /**
 * This method is used to set value of the class
 */
 public function setValueOf($id, $value)
 {
  $this->values[$id] = $value;
 }
    
    /**
 * This method is used to set values of the class
    * The spacial thing here is setting only given indexes but keeping the rest of
    * the values remain same.
 */
 public function setValues($values)
 {
        foreach($values as $id=>$value)
            $this->setValueOf($id,$value); 
 }
    
    
    /**
 * This method is used to get a string output of this object.
 */
 public function toString()
 {
        print_r($this);
 }
}

0 yorum:

Yorum Gönder