Forums / Developer / Tipp: Using a regular object with the template engine (eZSimpleObject)

Tipp: Using a regular object with the template engine (eZSimpleObject)

Author Message

Björn Dieding@xrow.de

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;
	}
}
?>

Looking for a new job? http://www.xrow.com/xrow-GmbH/Jobs
Looking for hosting? http://hostingezpublish.com
-----------------------------------------------------------------------------
GMT +01:00 Hannover, Germany
Web: http://www.xrow.com/