Maison > Article > développement back-end > Comprendre les modificateurs d'accès dans PHP POO : public, protégé et privé
En 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 expliquera le but et l'utilisation de ces modificateurs d'accès et expliquera comment les appliquer efficacement en PHP OOP.
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.
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 au sein de la classe Employee, une sous-classe de Person.
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 détecté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.
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().
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 détecté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.
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 détecté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.
Modifier | Inside Class | Derived Class | Outside Class |
---|---|---|---|
Public | Yes | Yes | Yes |
Protected | Yes | Yes | No |
Private | Yes | No | No |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!