La visibilité tu vois…

Publié dans PHP objet | Marqué avec , , , , , , ,
Share

Je viens de découvrir un nouveau tutoriel sur la POO en PHP sur le site Apprendre PHP. Le site est bien joli, et le tutoriel est bien expliqué. L’auteur s’est donné la peine de donner de nombreux exemples, et c’est ce qui rend ce tutoriel encore plus intéressant à mon sens.
Dans un précédent billet, j’avais expliqué l’utilisation des mots clés private, protected et private, mais avec ce tutoriel, je viens d’apprendre que cette notion s’appelle la visibilité d’attributs ou de méthodes.

Petit rappel sur la visibilité

  • public (valeur par défaut) : l’attribut ou la méthode ainsi défini pourra être utilisé par n’importe qui.
  • protected : l’attribut ou la méthode ainsi défini ne pourra être utilisé que dans la class parente et ses dérivées (bref, celles qui en héritent quoi).
  • private : l’attribut ou la méthode ainsi défini ne pourra être utilisé que dans la class parente.

Un petit exemple d’utilisation :

class MaClass {
  public $var1;
  public function fonction()
  {
    echo 'Coucou';
  }
}

Et une petite erreur renvoyé si on utilise un attribut ou une méthode protégée ou privée à mauvaise escient : Fatal error: Cannot access private property NomClass::$attribut in /path/to/Apprendre-php/magic_methods.php on line X.

Modifier la valeur d’un attribut protégé ou privé : mutator

On a parfois de modifier un attribut à l’extérieur d’un objet, et si ce dernier est protégé (protected) ou privé (private), eh bien on ne peut le modifier ainsi. La combine consiste à utilise le mutator qui est une méthode dont le rôle est de modifier la valeur de tel ou tel attribut. En général on nomme ce mutator : setNomAttribut().

class MaClass {
  private $var1;
  public function setVar1($var1)
  {
    $this->var1 = $var1;
  }
}

Lire la valeur d’un attribut protégé ou privé : accessor

De la même manière, si on souhaite lire la valeur d’un attribut protégé (protected) ou privé (private) à l’extérieur de tout objet, il faut utiliser un accessor : une méthode dont le rôle est de lire la valeur d’un attribut. En général, on nomme cet accessor : getNomAttribut().

class MaClass {
   private $var1;
  public function getVar1($var1)
  {
    return $this->var1;
  }
}

Conclusion

Voilà, ce que j’avais oublié est désormais corrigé 😉 C’est très bien expliqué sur le cours d’Apprendre PHP. Certains conseillent de créer des accessor pour tous les types d’attributs, on peut ainsi appliquer tous les traitements que l’on souhaite avant de récupérer un attribut ce qui est plutôt pratique et cela évite de modifier son code par la suite.
En C++, on omet en général le petit « get », ainsi si notre attribut se nomme chameau (ou plutôt « chameau_ »), notre accessor se nommera chameau(). En PHP, on ajoute en général le « get » comme en Java. Mais tout cela n’est qu’une convention.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*