Heim > Backend-Entwicklung > PHP-Problem > So fügen Sie Attribute zur PHP-Klasse hinzu

So fügen Sie Attribute zur PHP-Klasse hinzu

PHPz
Freigeben: 2023-04-05 15:18:01
Original
947 Leute haben es durchsucht

Übersicht:

Als Entwickler wissen wir alle, dass PHP eine typisierte Sprache ist, sodass jede Klasse eine bestimmte Attributstruktur hat. In einigen Fällen müssen wir zur Laufzeit Eigenschaften hinzufügen, um die Datenverwaltung in der Anwendung zu verbessern. Glücklicherweise ermöglichen uns PHP-Klassen, Eigenschaften zur Laufzeit dynamisch hinzuzufügen und dabei den Code klar und leicht verständlich zu halten.

In diesem Artikel zeigen wir, wie man Eigenschaften zur Laufzeit mithilfe der integrierten Syntax- und Reflektion-API in PHP hinzufügt. Wir werden auch Fallstudien vorstellen, damit Sie sehen können, wie diese Technologien in realen Anwendungen eingesetzt werden.

Syntax zum Hinzufügen von Attributen:

PHP 7.4 bietet Typhinweise für Attribute. In einer Klassendefinition deklarieren Sie Eigenschaftstypen und entsprechende Zugriffsebenen (öffentlich, geschützt, privat). Beispielsweise können wir eine geschützte Eigenschaft in der Klassendefinition deklarieren:

class Beispiel {
protected int $myProtectedInt;
}

Wenn wir versuchen, auf die Eigenschaft zuzugreifen, können wir normale Zugriffsmethoden wie diese verwenden:

$obj = new Beispiel();
$obj->myProtectedInt = 5;

Zu diesem Zeitpunkt haben wir der Eigenschaft $myProtectedInt erfolgreich den Wert 5 zugewiesen.

Reflection-API zum Hinzufügen von Eigenschaften:

PHP bietet einen speziellen Satz integrierter APIs, sogenannte Reflection-APIs. Mit der Reflection-API können wir Metadaten aus dem Code abrufen, den wir zur Laufzeit schreiben. Dies bedeutet, dass wir Statistiken über Klassen und ihre Mitglieder (Eigenschaften, Methoden, Konstanten usw.) erhalten können.

Wir können die Spiegelung einer Klasse mithilfe des folgenden Beispielcodes abrufen (beachten Sie, dass wir auf die Beispielklasse verwiesen haben):

$reflection = new ReflectionClass('Example');

Jetzt können wir die Liste der Eigenschaften der Klasse abrufen Klasse. Beispielsweise können wir mit der Methode $reflection->getProperties() eine Liste von Eigenschaften wie folgt abrufen:

$properties = $reflection->getProperties();

Dann müssen wir nur noch das Array durchlaufen und Fügen Sie nach Bedarf eine Eigenschaft hinzu. Der folgende Code fügt beispielsweise eine neue öffentliche Eigenschaft hinzu:

$reflection = new ReflectionClass('Example');
$properties = $reflection->getProperties();
$name = 'myNewPublicProperty';
$reflection- >newInstance()->$name = 'myNewValue';

Zu diesem Zeitpunkt haben wir erfolgreich eine neue Eigenschaft namens myNewPublicProperty hinzugefügt und sie mit der Zeichenfolge „myNewValue“ initialisiert.

Fallstudie:

Angenommen, wir schreiben eine einfache Verkaufsanwendung und müssen die Lagerbestände verschiedener Produkte verfolgen. Da sich der Produktbestand ändern kann, müssen wir zur Laufzeit Attribute hinzufügen, um die Bestandsmenge zu speichern.

Wir können eine einfache Produktklasse mit dem folgenden Code definieren:

class Product {
private int $productId;
private string $name;
private float $price;

public function __construct(int $productId, string $name , float $price){

$this->productId = $productId;
$this->name = $name;
$this->price = $price;
Nach dem Login kopieren

}

public function getProductId(){

return $this->productId;
Nach dem Login kopieren

}

public function getName(){

return $this->name;
Nach dem Login kopieren

}

public function getPrice(){

return $this->price;
Nach dem Login kopieren

}
}

Jetzt müssen wir die Inventarattribute hinzufügen. Sie können eine Unterklasse ProductWithStock definieren und das Stock-Attribut wie folgt hinzufügen:

class ProductWithStock erweitert Product {
protected int $stock;

public function __construct(int $productId, string $name, float $price, int $stock ){

parent::__construct($productId, $name, $price);
$this->stock = $stock;
Nach dem Login kopieren

}

public function getStock(){

return $this->stock;
Nach dem Login kopieren

}

public function setStock(int $stock){

$this->stock = $stock;
Nach dem Login kopieren

}
}

Wie Sie sehen können, erbt diese Unterklasse die Produktklasse und fügte eine hinzu Inventarattribut darauf. Die Zugriffsebene dieser Eigenschaft ist auf „geschützt“ eingestellt, da der Produktbestand in der Anwendung schreibgeschützt sein und über die Methode getProductStock() darauf zugegriffen werden sollte.

Im Code-Implementierungsbeispiel erstellen wir ein neues ProductWithStock-Objekt, fügen eine Eigenschaft namens $stock hinzu und legen ihren Wert im Konstruktor fest. In einer realen Anwendung kann es je nach Bedarf geändert oder aktualisiert werden.

Auf diese Weise haben wir erfolgreich eine Eigenschaft hinzugefügt und eine Klasse erweitert, um Daten besser verwalten zu können.

Fazit:

In diesem Artikel haben wir gelernt, wie man Eigenschaften in PHP hinzufügt. Wir verwenden die integrierte Syntax für das einfache Hinzufügen von Eigenschaften und stellen Möglichkeiten zum dynamischen Hinzufügen von Eigenschaften mithilfe der Reflection-API vor. Darüber hinaus zeigen wir anhand von Fallstudien, wie diese Techniken in realen Anwendungen eingesetzt werden, und zeigen Ihnen, wie Sie einen Kurs erweitern können, um ihn flexibler und einfacher zu verwalten. Diese Techniken sind während der Entwicklung sehr nützlich, da sie die Verwaltung und Änderung von Daten innerhalb der Anwendung ermöglichen und so eine bessere Skalierbarkeit und Wartbarkeit ermöglichen.

Das obige ist der detaillierte Inhalt vonSo fügen Sie Attribute zur PHP-Klasse hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage