In der objektorientierten PHP-Programmierung (OOP) steuern Zugriffsmodifikatoren die Sichtbarkeit von Klasseneigenschaften und -methoden. Die primären Zugriffsmodifikatoren in PHP sind öffentlich, geschützt und privat.
Dieser Artikel führt Sie durch den Zweck und die Verwendung dieser Zugriffsmodifikatoren und erklärt, wie Sie sie effektiv in PHP OOP anwenden.
class User { public $name = "John"; public function greet() { return "Hello, " . $this->name; } } $user = new User(); echo $user->greet(); // Output: Hello, John
In diesem Beispiel sind sowohl die Eigenschaft „$name“ als auch die Methode „greet()“ öffentlich, sodass direkt von außerhalb der Klasse auf sie zugegriffen werden kann.
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
In diesem Beispiel ist getAge() eine geschützte Methode, auf die innerhalb der Employee-Klasse, einer Unterklasse von Person, zugegriffen werden kann.
class Person { protected $age = 30; protected function getAge() { return $this->age; } } $person = new Person(); echo $person->getAge(); // Error: Cannot access protected method Person::getAge()
Fehlermeldung: Schwerwiegender Fehler: Nicht erfasster Fehler: Auf die geschützte Methode Person::getAge() kann nicht zugegriffen werden
In diesem Fall führt der Versuch, direkt von einer Instanz von Person aus auf die geschützte Methode getAge() zuzugreifen, zu einem Fehler, da auf geschützte Methoden von außerhalb der Klasse nicht zugegriffen werden kann.
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
In diesem Beispiel ist die Methode getBalance() privat, daher kann nur innerhalb der BankAccount-Klasse auf sie zugegriffen werden. Die Methode showBalance() ist öffentlich und kann verwendet werden, um indirekt auf die private Methode getBalance() zuzugreifen.
class BankAccount { private $balance = 1000; private function getBalance() { return $this->balance; } } $account = new BankAccount(); echo $account->getBalance(); // Error: Cannot access private method BankAccount::getBalance()
Fehlermeldung: Schwerwiegender Fehler: Nicht erfasster Fehler: Auf die private Methode BankAccount::getBalance() kann nicht zugegriffen werden
In diesem Fall führt der Versuch, direkt von einer Instanz von BankAccount aus auf die private Methode getBalance() zuzugreifen, zu einem Fehler, da auf private Methoden von außerhalb der Klasse nicht zugegriffen werden kann.
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();
Fehlermeldung: Schwerwiegender Fehler: Nicht erfasster Fehler: Auf die private Methode BankAccount::getBalance() kann nicht zugegriffen werden
Hier ist die private Methode getBalance() selbst für Unterklassen wie SavingsAccount nicht zugänglich, was zeigt, dass auf private Methoden außerhalb ihrer definierenden Klasse nicht zugegriffen werden kann.
Modifier | Inside Class | Derived Class | Outside Class |
---|---|---|---|
Public | Yes | Yes | Yes |
Protected | Yes | Yes | No |
Private | Yes | No | No |
Das obige ist der detaillierte Inhalt vonZugriffsmodifikatoren in PHP OOP verstehen: öffentlich, geschützt und privat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!