phpbar.de logo

Mailinglisten-Archive

[php] OOP

[php] OOP

Sebastian Mendel lists at sebastianmendel.de
Don Sep 30 17:32:17 CEST 2004


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