Dino Geek essaye de t'aider

Quelle est la différence entre public private et protected en PHP ?


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.

  1. Public
    Le modificateur `public` signifie que la propriété ou la méthode est accessible depuis n’importe où, que ce soit à l’intérieur de la classe, à l’extérieur de la classe, ou dans les sous-classes (classes qui héritent de cette classe).

Exemple :

```
class MaClasse { public $maPropriete = ‘Public’;

public function maMethode() { return $this->maPropriete; } }

$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`.

  1. Private
    Le modificateur `private` rend la propriété ou la méthode accessible uniquement à l’intérieur de la classe dans laquelle elle est définie. Elle n’est pas accessible depuis les sous-classes ni depuis l’extérieur de la classe.

Exemple :

```
class MaClasse { private $maPropriete = ‘Private’;

private function maMethode() { return $this->maPropriete; } public function afficherPropriete() { return $this->maMethode(); } }

$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.

  1. Protected
    Le modificateur `protected` signifie que la propriété ou la méthode est accessible uniquement à l’intérieur de la classe et dans les sous-classes. Elle n’est pas accessible depuis l’extérieur de ces classes.

Exemple :

```
class MaClasse { protected $maPropriete = ‘Protected’;

protected function maMethode() { return $this->maPropriete; } }

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.

  1. Conclusion
    En résumé :
    - `public` : Accessible partout (dans la classe, les sous-classes, et depuis l’extérieur).
    - `private` : Accessible uniquement dans la classe où elles sont définies.
    - `protected` : Accessible dans la classe où elles sont définies et dans les sous-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.

  1. Sources
    1. [PHP Manual – Visibility](https://www.php.net/manual/en/language.oop5.visibility.php) – Documentation officielle de PHP sur les modificateurs de visibilité.
    2. [W3Schools PHP OOP](https://www.w3schools.com/php/php_oop_access_modifiers.asp) – Introduction simplifiée aux modificateurs d’accès en PHP orienté objet.

Ces sources fournissent une vue d’ensemble et des exemples supplémentaires pour comprendre comment et quand utiliser chacun de ces modificateurs de visibilité.


Générez simplement des articles pour optimiser votre SEO
Générez simplement des articles pour optimiser votre SEO





DinoGeek propose des articles simples sur des technologies complexes

Vous souhaitez être cité dans cet article ? Rien de plus simple, contactez-nous à dino@eiki.fr

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Nom de Domaine | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Mentions Légales / Conditions Générales d'Utilisation