Mailinglisten-Archive |
Johannes Schlueter wrote: > Hi, > > On Friday 14 October 2005 22:43, Kai Meder wrote: > [...] > >>kennt jemand das problem >>"Fatal error: Cannot access protected property Radix_Context::$user in >><file> on line <line>" >>beim benutzen von overloading mittels __get() ? > > [...] > >>$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 > > [...] > > Existierende Methode/Property get vor overlaoding mittels __get/__call ist > schade und evtl. unerwartet, ist aber so. Von der Engine her ist es nur mit > Umstand möglch, erst auf ein lesbares Element zu prüfen, dann auf > __get/__call und dann wieder die Fehlermeldung für den ersten Fall > auszugeben. Ist schade, ist aber, bis ein Entwickler den richtigen Kniff > findet (was dank der Struktur aber nur mit allgemeinen > Geschwindigkeitseinbusen, die keiner Verantworten will möglich ist) so - wie > so vieles an PHP... also offiziell ist es so, dass deine argumentation nur bei public properties greift. protected/private ist quasi "unsichtbar", somit triggered php die overloading magic-functions. deshalb bin ich auch so ratlos was meine fehlermeldung angeht ... es IST eine protected property, trotzdem weigert sich php in diesem speziellen fall die __get-methode aufzurufen. siehe testcase (meine 2te mail), dort funktioniert es tadellos ... gruß, kai
php::bar PHP Wiki - Listenarchive