"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comprendre les modificateurs d'accès dans PHP POO : public, protégé et privé

Comprendre les modificateurs d'accès dans PHP POO : public, protégé et privé

Publié le 2024-11-08
Parcourir:469

Understanding Access Modifiers in PHP OOP: Public, Protected, and Private

Dans la programmation orientée objet (POO) PHP, les modificateurs d'accès contrôlent la visibilité des propriétés et des méthodes de classe. Les principaux modificateurs d'accès en PHP sont publics, protégés et privés.

Cet article vous guidera à travers le but et l'utilisation de ces modificateurs d'accès et expliquera comment les appliquer efficacement dans PHP OOP.

1. Modificateur d'accès public

  • Mot clé : public
  • Visibilité : accessible de n'importe où : à l'intérieur de la classe, à l'extérieur de la classe et dans les classes dérivées.
  • Cas d'utilisation : utilisez public pour les propriétés ou les méthodes qui doivent être accessibles à partir de n'importe quel contexte.

Exemple:

class User {
    public $name = "John";

    public function greet() {
        return "Hello, " . $this->name;
    }
}

$user = new User();
echo $user->greet();  // Output: Hello, John

Dans cet exemple, la propriété $name et la méthode greet() sont publiques, ce qui permet d'y accéder directement depuis l'extérieur de la classe.

2. Modificateur d'accès protégé

  • Mot clé : protégé
  • Visibilité : accessible au sein de la classe elle-même et par les sous-classes (classes enfants), mais pas de l'extérieur la classe.
  • Cas d'utilisation : utilisez protected pour permettre aux classes dérivées d'accéder à certaines propriétés ou méthodes tout en les gardant cachées du code externe.

Exemple avec un accès correct :

class Person {
    protected $age = 30;

    protected function getAge() {
        return $this->age;
    }
}

class Employee extends Person {
    public function showAge() {
        return $this->getAge();  // Correct: Accesses protected method within a subclass
    }
}

$employee = new Employee();
echo $employee->showAge();  // Output: 30

Dans cet exemple, getAge() est une méthode protégée, accessible dans la classe Employee, une sous-classe de Person.

Exemple avec erreur :

class Person {
    protected $age = 30;

    protected function getAge() {
        return $this->age;
    }
}

$person = new Person();
echo $person->getAge();  // Error: Cannot access protected method Person::getAge()

Message d'erreur : Erreur fatale : Erreur non interceptée : Impossible d'accéder à la méthode protégée Person::getAge()

Dans ce cas, tenter d'accéder à la méthode protégée getAge() directement à partir d'une instance de Person entraîne une erreur car les méthodes protégées ne sont pas accessibles depuis l'extérieur de la classe.

3. Modificateur d'accès privé

  • Mot clé : privé
  • Visibilité : accessible uniquement au sein de la classe où il est défini. Non accessible à partir des sous-classes ou du code externe.
  • Cas d'utilisation : utilisez private pour masquer les propriétés ou les méthodes de tout code extérieur à la classe, y compris les classes dérivées.

Exemple avec un accès correct :

class BankAccount {
    private $balance = 1000;

    private function getBalance() {
        return $this->balance;
    }

    public function showBalance() {
        return $this->getBalance();  // Correct: Accesses private method within the same class
    }
}

$account = new BankAccount();
echo $account->showBalance();  // Output: 1000

Dans cet exemple, la méthode getBalance() est privée, elle n'est donc accessible qu'au sein de la classe BankAccount. La méthode showBalance() est publique et peut être utilisée pour accéder indirectement à la méthode privée getBalance().

Exemple avec erreur :

class BankAccount {
    private $balance = 1000;

    private function getBalance() {
        return $this->balance;
    }
}

$account = new BankAccount();
echo $account->getBalance();  // Error: Cannot access private method BankAccount::getBalance()

Message d'erreur : Erreur fatale : Erreur non interceptée : Impossible d'accéder à la méthode privée BankAccount::getBalance()

Dans ce cas, tenter d'accéder à la méthode privée getBalance() directement à partir d'une instance de BankAccount entraîne une erreur car les méthodes privées ne sont pas accessibles depuis l'extérieur de la classe.

Exemple avec erreur dans la sous-classe :

class BankAccount {
    private $balance = 1000;

    private function getBalance() {
        return $this->balance;
    }
}

class SavingsAccount extends BankAccount {
    public function showBalance() {
        return $this->getBalance();  // Error: Cannot access private method BankAccount::getBalance()
    }
}

$savings = new SavingsAccount();
echo $savings->showBalance();

Message d'erreur : Erreur fatale : Erreur non interceptée : Impossible d'accéder à la méthode privée BankAccount::getBalance()

Ici, la méthode privée getBalance() est inaccessible même aux sous-classes comme SavingsAccount, démontrant que les méthodes privées ne sont pas accessibles en dehors de leur classe de définition.

4. Résumé des modificateurs d'accès

Modificateur En classe Classe dérivée Hors classe
Publique Oui Oui Oui
Protégé Oui Oui Non
Privé Oui Non Non

5. Meilleures pratiques

  • Utilisez public avec parcimonie pour exposer uniquement ce qui est nécessaire. Préférez l’encapsulation et exposez les fonctionnalités via des méthodes publiques.
  • Utilisez protected pour permettre aux sous-classes d'accéder aux propriétés ou méthodes nécessaires tout en les masquant du code externe.
  • Utilisez private pour encapsuler entièrement les éléments internes de la classe et empêcher l'accès depuis l'extérieur ou les classes dérivées.

Conclusion

Les modificateurs d'accès de PHP (public, protégé, privé) fournissent un mécanisme pour gérer la visibilité et l'encapsulation en POO. En comprenant et en appliquant correctement ces modificateurs, vous pouvez créer un code plus sécurisé et plus maintenable.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/ialaminpro/understanding-access-modifiers-in-php-oop-public-protected-and-private-5bah?1 En cas de violation, veuillez contacter study_golang@163 .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3