Vous le savez ; depuis lundi je m’efforce de faire découvrir à ceux qui ne le connaissent pas le monde le la Programmation Orienté Objet (voir ce billet). Une série de billet à l’occasion de la sortie cette semaine de la nouvelle version de Titaxium.
- Lundi : Introduction
- Mardi : Les Concepts Généraux de la POO
Les concepts généraux de la POO (suite)
Porté des éléments
Il est possible de contrôler la visibilité des éléments de votre classe au sein de votre code. Pour ce faire nous allons découvrir de nouveaux mots clés.
Si vous avez déjà pu lire du code source PHP écris avec de la POO ; vous avez sans doutes vu apparaitre des mots comme « public», « private» ou encore « protected».
Ces mots clé sont utilisés pour définir la visibilité de vos éléments. J’entends par éléments ; les propriétés et les méthodes de votre classe. L’intérêt est de pouvoir limiter l’accès à ces éléments en fonction de l’endroit dans le code ou vous en faites appel.
Vous pouvez restreindre la visibilité de vos éléments selon les trois niveaux suivant :
Public
De n’importe où cet élément sera visible. A n’importe quel moment dans votre programme vous pourrez venir utiliser un élément défini comme public.
class Stylo {
public $niveau_encre = 1;
}
$unStylo = new Stylo();
echo $unStylo->niveau_encre; // Affiche 1
$unStylo->niveau_encre = 0;
echo $unStylo->niveau_encre; // Affiche 0
Private
Si vous choisissez cette option ; votre élément ne sera visible uniquement par votre classe. De la même manière que ; dans un développement procédural ; vous déclarez (par défaut) et utilisez une variable au sein d’une fonction. Cette variable ne sera visible et utilisable uniquement au sein de votre fonction ; et pour une utilisation de celle-ci.
class Stylo {
private $niveau_encre = 1;
function test() {
echo $this->niveau_encre ;
}
}
$unStylo = new Stylo();
echo $unStylo->niveau_encre;
// Affiche l’erreur :
// Cannot Access private property
$unStylo->test() ; // Affiche 1
Protected
Ce type de visibilité est associé aux concepts d’héritages et de polymorphisme que nous ne traiterons pas dans cet article.
Par défaut en PHP ; tous vos éléments prendront la visibilité public.