Forums / Developer / Tipp: Using a regular object with the template engine (eZSimpleObject)
Björn X
Tuesday 11 May 2004 7:32:58 am
Usage:
$tpl->setVariable( 'skin', eZSkin::instance($skinid) ); $tpl->setVariable( 'error', new eZError("This is a error") );
The classes
<?php include_once('extension/siteskins/classes/ezsimpleobject.php'); class eZSkin extends eZSimpleObject { function eZSkin($id=null) { $this->co = &eZContentObject::fetch($id); $treenodep = &eZContentObjectTreeNode::fetch($this->co->mainParentNodeID()); $this->parent = &eZContentObject::fetch($treenodep->attribute('contentobject_id')); $com = &$this->co->attribute('data_map'); $pam =&$this->parent->attribute('data_map'); $this->id = $com["id"]->content(); $this->extension = $pam["extension"]->content(); } function &instance($id) { return parent::instance($id,"ezskin"); } var $co; var $parent; var $extension; var $id; } include_once('extension/siteskins/classes/ezsimpleobject.php'); class eZError extends eZSimpleObject { function eZError( $text, $type=null,$number=null) { if ($text) $this->text=$text; if ($type) $this->error['type']=$type; if ($number) $this->error['number']=$number; } function &instance($id) { return parent::instance($id,"ezerror"); } var $text; var $error; } /*! \file ezsimpleobject.php */ /*! \class eZSimpleObject ezsimpleobject.php \brief The class eZSimpleObject provide could be the super class of any regular object you can also parse this Object to the tempalte engine */ class eZSimpleObject { function eZSimpleObject() { } function hasattribute($name) { $classname = get_class($this); $vars = get_class_vars($classname); if ( array_key_exists($name,$vars) ) return true; else return false; } function & attribute($name) { return $this->$name; } function &instance($keys = null,$classname=__CLASS__) { if (is_array($keys) and count($keys)) { $keystring=implode("", $array); } else if ($keys and (is_string($keys) or is_integer($keys) ) ) { $keystring="$keys"; } else { $keystring=""; } $impl =& $GLOBALS[__CLASS__."GlobalInstance".$keystring]; $class =& get_class( $impl ); if ( $class != __CLASS__ ) { $impl = new $classname( $keys ); $GLOBALS[__CLASS__."GlobalInstance".$keystring]=$impl; } return $impl; } } ?>