Mailinglisten-Archive |
ich komme einfach nicht weiter. dieser test-case funktioniert fehlerfrei, wie natürlich zu erwarten ist: class OverloadingDispatcher { function __get($name) { return call_user_func(array($this , "get{$name}")); } } class Root extends OverloadingDispatcher { protected $a; function __construct() { $this->a = new A(); } function getA() { return $this->a; } } class A extends OverloadingDispatcher { protected $b; function __construct() { $this->b = new B(); } function getB() { return $this->b; } } class B extends OverloadingDispatcher { protected $c; function __construct() { $this->c = new C(); } function getC() { return $this->c; } } class C { function sayHello() { echo 'hello world!'; } } $r = new Root(); $r->a->b->c->sayHello(); funktioniert ... hier hängt sich php auch *nicht* an den protected properties auf ... für heute wars das, hoffe jemand kann mir weiterhelfen ... gruß, kai Kai Meder wrote: > hallo zusammen, > > kennt jemand das problem > "Fatal error: Cannot access protected property Radix_Context::$user in > <file> on line <line>" > beim benutzen von overloading mittels __get() ? > > aufruf: > $this->context->user->attributes->userID = 1; > > $this->context ist eine klasse mit der protected property $user. > anstatt die overloading methode __get aufzurufen, hängt sich php immer > an $user auf ... obwohl es protected ist! sobald ich die property auf > $_user ändere, funktioniert es aber er hängt sich an der nächsten > property attributes auf ... > > $db = $this->context->database; funktioniert jedoch. für database wird > korrekterweise __get aufgerufen und es ist genauso eine protected > property wie user ... > > habe das ganze auch schnell mit paar zusammengehackten klassen > gegentesten, prinzipiell hat php mit diesem chaining von __get-aufrufen > keine probleme ... > > hat jemand irgendeinen rat? > kai
php::bar PHP Wiki - Listenarchive