Génération PHP.net » La programmation orientée objet

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();
?>

Pages: 1 2 3 4