suchen
  • Anmelden
  • Melden Sie sich an
Passwort-Reset erfolgreich

Verfolgen Sie die Projekte, die Sie interessieren, und erfahren Sie die neuesten Nachrichten über sie

Objekte und Datenstrukturen

Sammlung 148
Lesen 30833
Updatezeit 2016-09-11

Objekte und Datenstrukturen

1. Getter und Setter verwenden. Objektkapselung verwenden

2. Verwenden Sie private oder geschützte Mitgliedsvariablen für Objekte

1. Verwenden Sie Getter und Setter

In PHP können Sie public, protected, private für Methoden verwenden, um Änderungen an Objekteigenschaften zu steuern.

  1. Wenn Sie andere Vorgänge als das Abrufen der Eigenschaften eines Objekts ausführen möchten, müssen Sie nicht jede Eigenschaftszugriffsmethode im Code suchen und ändern.

  2. Wenn eine Attributmethode vorhanden ist, die set entspricht, ist es einfach, eine Parameterüberprüfung hinzuzufügen

  3. Darstellung innerhalb des Pakets

  4. Einfaches Hinzufügen von Protokollierung und Fehlerkontrolle bei Verwendung von set und get

  5. Beim Erben der aktuellen Klasse können Sie die Standardmethodenfunktion überschreiben

  6. get*, set* sind einfach zu verwendendes Lazy Loading, wenn die Objekteigenschaften vom Remote-Server abgerufen werden

Darüber hinaus entspricht dieser Ansatz auch dem Öffnungs- und Schließprinzip in der OOP-Entwicklung.

Schlecht:

 class BankAccount
{
    public $balance = 1000;
}
 
$bankAccount = new BankAccount();
 
// Buy shoes...
$bankAccount->balance -= 100;

Gut:

 class BankAccount
{
    private $balance;
 
    public function __construct(int $balance = 1000)
    {
      $this->balance = $balance;
    }
 
    public function withdraw(int $amount): void
    {
        if ($amount > $this->balance) {
            throw new \Exception('Amount greater than available balance.');
        }
 
        $this->balance -= $amount;
    }
 
    public function deposit(int $amount): void
    {
        $this->balance += $amount;
    }
 
    public function getBalance(): int
    {
        return $this->balance;
    }
}
 
$bankAccount = new BankAccount();
 
// Buy shoes...
$bankAccount->withdraw($shoesPrice);
 
// Get balance
$balance = $bankAccount->getBalance();

2. Verwenden Sie private oder geschützte Mitgliedsvariablen für Objekte

  • Das Ändern öffentlicher Methoden und Eigenschaften ist sehr gefährlich, da sich externer Code leicht darauf verlassen kann und Sie keine Kontrolle darüber haben. Änderungen hieran wirken sich auf alle Benutzer dieser Klasse aus. Öffentliche Methoden und Eigenschaften sind für Änderungen am gefährlichsten, da sich einige externe Codes leicht auf sie verlassen können und Sie nicht kontrollieren können, welcher Code auf ihnen basiert. Änderungen in der Klasse sind für alle Benutzer der Klasse gefährlich.

  • Änderungen an protected sind fast genauso gefährlich wie Änderungen an public, da sie für Unterklassen verfügbar sind. Der einzige Unterschied zwischen ihnen besteht darin, dass die aufrufbaren Speicherorte unterschiedlich sind und Änderungen an ihnen alle Orte betreffen, die diese Klasse integrieren. protected Modifikatoren sind genauso gefährlich wie public, da sie im Gültigkeitsbereich jeder untergeordneten Klasse verfügbar sind. Dies bedeutet effektiv, dass der Unterschied zwischen public und protected nur im Zugriffsmechanismus besteht, die Kapselungsgarantie jedoch für alle Nachkommenklassen gleich bleibt .

  • Änderungen an private garantieren, dass sich dieser Teil des Codes nur auf die aktuelle Klasse auswirkt. Der private Modifikator garantiert, dass es gefährlich ist, Code nur innerhalb der Grenzen einer einzelnen Klasse zu ändern (Sie sind bei Änderungen sicher und haben keinen Jenga-Effekt).

Verwenden Sie daher public/protected nur, wenn Sie steuern müssen, ob auf den Code in der Klasse zugegriffen werden kann, andernfalls verwenden Sie private.

Sie können diesen Blogbeitrag von Fabien Potencier lesen.

Schlecht:

 class Employee
{
    public $name;
 
    public function __construct(string $name)
    {
        $this->name = $name;
    }
}
 
$employee = new Employee('John Doe');
echo 'Employee name: '.$employee->name; // Employee name: John Doe

Gut:

 class Employee
{
    private $name;
 
    public function __construct(string $name)
    {
        $this->name = $name;
    }
 
    public function getName(): string
    {
        return $this->name;
    }
}
 
$employee = new Employee('John Doe');
echo 'Employee name: '.$employee->getName(); // Employee name: John Doe
Heiße KI -Werkzeuge
Undress AI Tool
Undress AI Tool

Ausziehbilder kostenlos

AI Clothes Remover
AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undresser.AI Undress
Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

Stock Market GPT
Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Beliebtes Werkzeug
Notepad++7.3.1
Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version
SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)