Problem mit __call bei Überladung

Maniac

Erfahrenes Mitglied
Ich versuche mit Überladung eine Variable die deklariert wurde wieder mit einer Methode auszulesen, was aber nicht funktionieren will.
Hab ich da einen Denkfehler****

PHP:
<?php

class test
{
	protected $_ungivenVars = array();
	
	
	public function __set($sName, $mVal) {
		$this->_ungivenVars[$sName] = $mVal;
		return $this;
	}
	
	public function __get($sName) {
		if (array_key_exists($sName, $this->_ungivenVars)) {
			return $this->_ungivenVars[$sName];
		}
		
		throw new Exception('Es existiert keine Eigenschaft mit dem Namen: ' . $sName);
	}
	
	public function __call($sMethod, $aArguments) {

		$sSwitch = strtolower($sMethod);
		
		switch (substr($sSwitch, 0,3)) {
			case 'set' : self::__set(substr($sSwitch, 3), implode('', $aArguments));
				break;
			case 'get' : self::__get(substr($sSwitch, 3));
				break;
		}
	}
}

$test = new test();
$test->setFoo('bar');
var_dump($test->foo);
var_dump($test->getFoo());

Ausgabe:
Code:
string(3) "bar"
NULL

Was mach ich falsch?
 
Da fehlt ein Return. Darum gibt dir __call() nix zurück
PHP:
            case 'get' : return self::__get(substr($sSwitch, 3));
 
Oh man, jetzt im nachhinein ist mir es auch klar...
manchmal sieht man den Wald vor lauter Bäumen nicht...

Danke Yaslaw
 
Zurück