La visibilité d'une propriété ou d'une méthode peut être définie en préfixant
la déclaration avec le mot-clé : public,
protected ou private.
Les éléments déclarés publics public
peuvent être utilisés par n'importe quelle partie
du programme. Les éléments protégés protected
limitent l'accès aux classes héritées (et à la classe qui a définie l'élément).
Les éléments privés private limitent la visibilité uniquement
à la classe qui les a définis.
Les classes membres doivent être définies comme
publiques, protégées ou privées.
Exemple 18-3. Déclaration des membres
<?php
class MyClass { public $public = "MyClass::public!\n"; protected $protected = "MyClass::Protected!\n"; protected $protected2 = "MyClass::Protected2!\n"; private $private = "MyClass::private!\n";
function printHello() { print "MyClass::printHello() " . $this->private; print "MyClass::printHello() " . $this->protected; print "MyClass::printHello() " . $this->protected2; } }
class MyClass2 extends MyClass { protected $protected = "MyClass2::protected!\n";
function printHello() {
MyClass::printHello();
print "MyClass2::printHello() " . $this->public; print "MyClass2::printHello() " . $this->protected; print "MyClass2::printHello() " . $this->protected2;
/* Fera une erreur fatale : */ //print "MyClass2::printHello() " . $this->private; /* Erreur fatale */
} }
$obj = new MyClass();
print "Main:: " . $obj->public; //print $obj->private; /* Erreur fatale */ //print $obj->protected; /* Erreur fatale */ //print $obj->protected2; /* Erreur fatale */
$obj->printHello(); /* doit s'afficher */
$obj2 = new MyClass2(); print "Main:: " . $obj2->private; /* Indéfini */
//print $obj2->protected; /* Erreur fatale */ //print $obj2->protected2; /* Erreur fatale */
$obj2->printHello(); ?>
|
|
Note :
La déclaration de variables avec le mot clé 'var' en PHP 4 n'est plus
supportée pour les objets PHP 5. Pour des raisons de compatibilité,
une variable déclarée ainsi aura automatiquement une visibilité
publique et une erreur de niveau E_STRICT sera
générée.