En PHP, les mots clés `public`, `private`, et `protected` sont utilisés pour définir la visibilité des propriétés et des méthodes dans les classes orientées objet. Ces modificateurs de visibilité contrôlent de quelle manière et depuis où ces propriétés et méthodes peuvent être accessibles. Voici une explication détaillée de chacun de ces modificateurs avec des exemples concrets.
Exemple :
```
class MaClasse {
public $maPropriete = ‘Public’;
$obj = new MaClasse();
echo $obj->maPropriete; // Affiche ‘Public‘
echo $obj->maMethode(); // Affiche ‘Public‘
```
Dans cet exemple, la propriété `$maPropriete` et la méthode `maMethode()` sont accessibles non seulement à l’intérieur de la classe `MaClasse`, mais aussi à l’extérieur de celle-ci, via l’objet `$obj`.
Exemple :
```
class MaClasse {
private $maPropriete = ‘Private’;
$obj = new MaClasse();
echo $obj->afficherPropriete(); // Affiche ‘Private‘
echo $obj->maPropriete; // Erreur : Propriété inaccessible
echo $obj->maMethode(); // Erreur : Méthode inaccessible
```
Dans cet exemple, la propriété `$maPropriete` et la méthode `maMethode()` ne peuvent être accédées que depuis l’intérieur de la classe `MaClasse`. Toute tentative d’accès depuis l’extérieur de la classe ou même depuis une sous-classe provoquera une erreur.
Exemple :
```
class MaClasse {
protected $maPropriete = ‘Protected’;
class SousClasse extends MaClasse {
public function afficherPropriete() {
return $this->maMethode();
}
}
$obj = new SousClasse();
echo $obj->afficherPropriete(); // Affiche ‘Protected‘
echo $obj->maPropriete; // Erreur : Propriété inaccessible
echo $obj->maMethode(); // Erreur : Méthode inaccessible
```
Dans cet exemple, la propriété `$maPropriete` et la méthode `maMethode()` sont accessibles dans la sous-classe `SousClasse` grâce à l’héritage. Néanmoins, elles restent inaccessibles depuis l’extérieur des classes.
Ces concepts sont fondamentaux dans la programmation orientée objet en PHP, permettant un meilleur encapsulage et une gestion plus fine de la visibilité et de la manipulation des données au sein des classes.
Ces sources fournissent une vue d’ensemble et des exemples supplémentaires pour comprendre comment et quand utiliser chacun de ces modificateurs de visibilité.