phpbar.de logo

Mailinglisten-Archive

[php] PHP5 overloading

[php] PHP5 overloading

Kai Meder ml at kai.meder.info
Fre Okt 14 23:24:23 CEST 2005



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