Stack von Objekten

Pius Hermit

Erfahrenes Mitglied
Liebe Mitstreiter,

weiß jemend, warum s.u. "pop" kein Objekt liefert?

PHP:
class Compiler
{
	private $errorLog;
	private $stack;
	
	public function __construct()
	{
		$this->errorLog = new ErrorLog();
		$this->stack = array();
	}
	
	private function isStackEmpty()		{return (sizeof($this->stack) == 0);}
	private function pushStack($obj)	{array_push($this->stack, $obj);}
	private function popStack()			{array_pop($this->stack);}
 
Hier noch einmal die (fast) gesamte Klasse:
PHP:
class Compiler
{
	private $errorLog;
	private $stack;
	
	public function __construct()
	{
		$this->errorLog = new ErrorLog();
		$this->stack = array();
	}
	
	private function isStackEmpty()		{return (sizeof($this->stack) == 0);}
	private function pushStack($obj)	{array_push($this->stack, $obj);}
	private function popStack()			{array_pop($this->stack);}

	private function gefunden($tagPosition) {return ($tagPosition > -1);}

	public function compile($meta)
	{
		$on		= stripos($meta, META_ON);
		$off	= stripos($meta, META_OFF);
		$struc	= new Structure();
		
		if ($this->gefunden($on))					// META_ON gefunden
		{
			if ($this->gefunden($off))				// META_OFF gefunden
			{
				if ($on < $off)						// META_ON als nächstes
				{
					$struc->setMETA(substr($meta, 0, $on));
					$this->pushStack($struc);
					$struc->setUP($this->compile(substr($meta, $on + strlen(META_ON))));
				}
				else								// META_OFF als nächstes
				{
					if ($this->isStackEmpty())		// keine META_ONs mehr offen
						$this->$errorLog->add("Fehler! Meta-Tag '".META_OFF."' bei '".substr($meta, $off + strlen(META_OFF))."' nicht geschlossen!");
					else
					{
						$struc->setMETA(substr($meta, 0, $off));
						$this->popStack()->setRight($this->compile(substr($meta, $off + strlen(META_OFF))));
						
					}
				}
			}
		}
		else										// kein META_ON gefunden
		{
			if ($this->gefunden($off))	
				$this->$errorLog->add("Fehler! Meta-Tag '".META_OFF."' bei '".substr($meta, 0, $off+1)."' zu oft geschlossen!");
			else									// kein META_OFF gefunden
				$struc->setMETA($meta);
		}
		return $struc;
	}

Der Fehler liegt im Aufruf "->setRight" eines vermeintlichen Objektes aus dem Stack
 
Zurück