Ciao,
vorrei chiedervi un piccolo chiarimento circa le regole di visibilità:
Se dichiarao una variabile public: la vedo in qualunque posto nello script.
Se dichiaro una variabile private: la vedo solo dall'interno della classe dove l'ho dichiarata e per accedervi dall'eseterno devo per forza usare un metodo public dichiarato nella classe stessa.
Se dichiaro una variabile come protected la vedo e posso accedervi anche nelle sottoclassi...

Ok...ecco l'esempio che mi crea dei dubbi:

codice:
<?php

class MyClass{

    protected $name = "Pippo";

    private function getName() {
        echo $this->name;
    }

}

class MyOtherClass extends MyClass {        // Estente la classe MyClass

    public function getName() {             // aggiungendo un metodo
        echo "The name is " . $this->name;
    }

}

/* Funzione esterna alle classi che deve ricevere un oggetto istanza di MyClass */
function giveMeObj(MyClass $obj) {
    echo $obj->getName();
}

$obj1 = new MyOtherClass();     // Creo un oggetto come istanza di MyOtherClass
giveMeObj($obj1);   // Lo posso passare comunque alla funzione perchè MyOtherClass estende MyClass

?>
Ho una classe MyClass che al proprio interno contiene la variabile $name dichiarata come protected, allora $name sarà visibile dentro MyClass e dentro le sue sottoclassi.

Poi ho una sottoclasse MyOtherClass che estende MyClass aggiungendogli un metodo getName() che semplicemente restituisce il valore della variabile $name.

Se dichiaro la variabile $name come protected quando invoco la funzione esterna giveMeObj che a sua volta invoca il metodo getName di MyOtherClass mi viene restituito il valore di tale variabile.

Se invece dichiaro $name come private dentro MyClasse tale valore non mi viene restituito...

In pratica non mi viene restituito perchè se $name è dichiarata come private, la proprietà non viene ereditata dalla sottoclasse MyOtherClass che estende MyClass?

E' corretto il ragionamento?

Grazie
Andrea