Manuel PHP
Précédent | Chapitre 18. Les classes et les objets (PHP 5) | Suivant

# 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

.

Précédent | Sommaire | Suivant
Constructeurs et destructeurs | Niveau supérieur | ::