Visibilité

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.

Visibilité des membres

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.

Visibilité des méthodes

.