<?php
class MagicMethods
{	
	
	public function __call($fctName, $args)
	{
		if(substr($fctName, 0, 3) == 'get' && $args == null)
		{
			$param = strtolower(substr($fctName, 3));
			return $this->$param;
		}
		else
		{
			if(substr($fctName, 0, 3) == 'set')
			{
				$param = strtolower(substr($fctName, 3));
				$this->$param = $args[0];
			}
			else
			{ throw new Exception("Die Funktion $fctName(".var_export($args, true).") ist auf das aufrufende Objekt nicht anwendbar!"); }
		}
	}
	
	public function __get($param)
	{
		$vars = get_class_vars(get_class($this));
	
		if(!array_key_exists($param, $vars))
		{ throw new Exception("Das Feld $param ist nicht definiert!"); }
	}
	
	public function __set($param, $value)
	{
		
		$vars = get_class_vars(get_class($this));
		
		if(!array_key_exists($param, $vars))
			{ throw new Exception("Das Feld $param ist nicht definiert!"); }
	}
}
?>