„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Zugriffsmodifikatoren in PHP OOP verstehen: öffentlich, geschützt und privat

Zugriffsmodifikatoren in PHP OOP verstehen: öffentlich, geschützt und privat

Veröffentlicht am 08.11.2024
Durchsuche:427

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

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.

1. Modifikator für öffentlichen Zugriff

  • Schlüsselwort: öffentlich
  • Sichtbarkeit: Von überall aus zugänglich – innerhalb der Klasse, außerhalb der Klasse und in abgeleiteten Klassen.
  • Anwendungsfall: Verwenden Sie public für Eigenschaften oder Methoden, auf die aus jedem Kontext zugegriffen werden sollte.

Beispiel:

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.

2. Geschützter Zugriffsmodifikator

  • Schlüsselwort: geschützt
  • Sichtbarkeit: Zugriff innerhalb der Klasse selbst und durch Unterklassen (untergeordnete Klassen), aber nicht von außerhalb der Klasse.
  • Anwendungsfall: Verwenden Sie protected, um abgeleiteten Klassen den Zugriff auf bestimmte Eigenschaften oder Methoden zu ermöglichen und sie gleichzeitig vor externem Code zu verbergen.

Beispiel mit korrektem Zugriff:

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.

Beispiel mit Fehler:

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.

3. Privater Zugriffsmodifikator

  • Schlüsselwort: privat
  • Sichtbarkeit: Nur innerhalb der Klasse zugänglich, in der es definiert ist. Nicht zugänglich von Unterklassen oder externem Code.
  • Anwendungsfall: Verwenden Sie private, um Eigenschaften oder Methoden vor jedem Code außerhalb der Klasse zu verbergen, einschließlich abgeleiteter Klassen.

Beispiel mit korrektem Zugriff:

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.

Beispiel mit Fehler:

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.

Beispiel mit Fehler in der Unterklasse:

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.

4. Zusammenfassung der Zugriffsmodifikatoren

Modifikator Innerhalb der Klasse Abgeleitete Klasse Außerhalb des Unterrichts
Öffentlich Ja Ja Ja
Geschützt Ja Ja NEIN
Privat Ja NEIN NEIN

5. Best Practices

  • Verwenden Sie public sparsam, um nur das Notwendige offenzulegen. Bevorzugen Sie die Kapselung und stellen Sie die Funktionalität über öffentliche Methoden bereit.
  • Verwenden Sie protected, um Unterklassen den Zugriff auf erforderliche Eigenschaften oder Methoden zu ermöglichen und diese gleichzeitig vor externem Code zu verbergen.
  • Verwenden Sie private, um Klasseninterna vollständig zu kapseln und den Zugriff von externen oder abgeleiteten Klassen zu verhindern.

Abschluss

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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/ialaminpro/understanding-access-modifiers-in-php-oop-public-protected-and-private-5bah?1 Bei Verstößen wenden Sie sich bitte an Study_golang@163 .com, um es zu löschen
Neuestes Tutorial Mehr>

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