La programmation orientée objet
Public/Protected/Private
PHP5 introduit une nouvelle notion, celle de la visibilité. Certaines méthodes ou propriétés peuvent être rendues inaccessible de l’extérieur, et ainsi protéger certaines méthodes ou propriétés réservées à certains traitements internes.
Public
Le préfixe public définit une méthode ou propriété publique accessible à tous les niveaux, soit à partir de la classe, d’un descendant ou de l’extérieur.
Afin d’assurer une compatibilité descendante, les méthodes et propriétés déclarées à l’aide de l’ancienne méthode seront considérées comme public.
Cependant, il est fortement recommandé d’utiliser public à var en PHP5.
Exemple
<?php // Définition d'une classe class uneClasse { public $propriete; function methode() { } public methode2() { } } ?>
Protected
Le préfixe protected définit une méthode ou propriété privée accessible qu’à partir de la classe elle-même et ses descendantes.
Toutes tentatives d’accès à ces membres protégés résulteront par une erreur fatale.
Exemple
<?php // Définition d'une classe class uneClasse { protected $text; public __construct() { } public setText( $val ) { $this->text = $val; } public getText() { return $this->Protegee(); } protected Protegee() { return $this->text } } $obj = new uneClasse(); // Modifie une propriété protégée $obj->setText('Valeur'); // Propriété protégée : Erreur FATALE // echo $obj->text; // Méthode protégée : Erreur FATALE // echo $obj->Protegee(); // Récupère une propriété protégée echo $obj->getText(); ?>
Private
Le préfixe private définit une méthode ou propriété privée accessible qu’à partir de la classe mère.
Toutes tentatives d’accès à ces membres protégés à partir de l’extérieur ou d’un descendant, résulteront par une erreur fatale.
Exemple
<?php // Définition d'une classe class papa { protected $argent = '1$'; public prendreArgent() { return $this->argent; } } // Définition d'un descendant class fils extends papa { } $papa = new papa(); $fils = new fils(); // Propriété privée : Erreur FATALE // echo $fils->argent; // Propriété privée : Erreur FATALE // echo $papa->argent; // Récupère une propriété privée echo $papa->prendreArgent(); ?>