Heim >Backend-Entwicklung >PHP-Tutorial >Zugriffsmodifikatoren in PHP OOP verstehen: öffentlich, geschützt und privat

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

PHPz
PHPzOriginal
2024-09-11 06:33:541022Durchsuche

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

  • Stichwort: ö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, die aus jedem Kontext zugänglich sein sollten.

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ßerhalbder 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änglichvon 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
Modifier Inside Class Derived Class Outside Class
Public Yes Yes Yes
Protected Yes Yes No
Private Yes No No
Öffentlich Ja Ja Ja

Geschützt

Ja Ja Nein Privat Ja Nein Nein
  • 5. Best Practices
  • Verwenden Sie Öffentlichkeit
  • sparsam, um nur das Notwendige preiszugeben. 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.

Fazit 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.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn