Mailinglisten-Archive |
Christoph Rust schrieb: > Hi Liste! > > Mal wieder ne Frage zu PHP5 und OOP. > Wenn man eine Variable oder Methode mit "protected" deklariert, kann man > doch nur darauf zugreifen, wenn der Zugriff innerhalb der eigenen Klasse > passiert, oder wenn die Klasse die darauf zugreifen will, von der > Haupt-/Elternklasse abgeleitet ist. > > Beispiel: > > <code> > class foo { > > protected $var = "value of var"; > > protected static function method(){ > return "value of method"; > } > > } > > class bar extends foo { > > public static function getVar(){ > return parent::$var; > } > > public static function callMeethod(){ > return parent:method(); ':' statt '::' Tippfehler in der Mail, oder? > } > > } > > echo foo::getVar(); > echo foo::callMethod(); > > } > </code> > > Bei diesem Beispiel bekomme ich beim Methodenaufruf ("echo > foo::callMethod()") wie gewünscht den Wert "value of method" zurück, der > dann ausgegeben wird. > Wenn ich aber die Methode "foo::getVar()" aufrufe, bekomme ich einen > Laufzeitfehler, mit: > *Fatal error*: Cannot access private property foo::$var in ... > Wie kann das sein, dass es bei der Methode funktioniert und bei der > Variablen nicht? > Ist das irgendwie ein Bug? glaube nicht, aber was bitte soll protected static ??? das widerspricht sich doch, oder? static sagt das die Methode nicht vererbt wird und auch nicht in einem Objekt verfügbar ist protected sagt das diese Methode nur innerhalb eines Objektes der selben oder einer abgeleiteten Klasse aufgerufen werden kann und geht denn ìn bar::getVar() return self::$var; nicht? -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive