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.
Modifikator | Innerhalb der Klasse | Abgeleitete Klasse | Außerhalb des Unterrichts |
---|---|---|---|
Öffentlich | Ja | Ja | Ja |
Geschützt | Ja | Ja | NEIN |
Privat | Ja | NEIN | NEIN |
Die Zugriffsmodifikatoren von PHP (öffentlich, geschützt, privat) bieten einen Mechanismus zur Verwaltung der Sichtbarkeit und Kapselung in OOP. Wenn Sie diese Modifikatoren richtig verstehen und anwenden, können Sie sichereren und wartbareren Code erstellen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3