PHP 8 hat eine fantastische Funktion namensConstructor Property Promotioneingeführt. Wenn Sie mit PHP oder dem Programmieren im Allgemeinen noch nicht vertraut sind, klingt das vielleicht etwas komplex. Aber keine Sorge! In diesem Blog erfahren Sie anhand zahlreicher Codierungsbeispiele, was es ist, warum es nützlich ist und wie Sie es verwenden können. Fangen wir an!
Vor PHP 8 erforderte das Erstellen einer Klasse mit Eigenschaften und deren Initialisierung in einem Konstruktor eine Menge repetitiven Code. MitConstructor Property Promotionvereinfacht PHP 8 diesen Prozess, indem es Ihnen ermöglicht, Klasseneigenschaften direkt in den Konstruktorparametern zu deklarieren und zu initialisieren.
Bei der Promotion von Constructor-Eigenschaften geht es nicht nur darum, ein paar Zeilen Code einzusparen – es geht darum, Ihren Code sauberer, leichter lesbar und einfacher zu warten. Dies ist besonders wertvoll für Anfänger, die die traditionelle Art, Konstruktoren zu schreiben, möglicherweise etwas entmutigend finden.
Beginnen wir damit, die traditionelle Art, Klassen und Konstruktoren zu schreiben, mit der neuen Art zu vergleichen, die in PHP 8 eingeführt wurde.
class Car { public string $make; public string $model; public int $year; public function __construct(string $make, string $model, int $year) { $this->make = $make; $this->model = $model; $this->year = $year; } } $car = new Car('Toyota', 'Corolla', 2020);
In diesem Beispiel müssen wir die Eigenschaften ($make, $model und $year) deklarieren und sie dann innerhalb des Konstruktors zuweisen. Es gibt viele Wiederholungen, besonders wenn es sich um Klassen handelt, die viele Eigenschaften haben.
Mit PHP 8 (Constructor Property Promotion)
class Car { public function __construct( public string $make, public string $model, public int $year ) {} } $car = new Car('Toyota', 'Corolla', 2020);
Mit der Constructor Property Promotion deklarieren und weisen Sie die Eigenschaften in den Konstruktorparametern zu. Das Ergebnis ist eine prägnantere und lesbarere Klassendefinition.
Um die Leistungsfähigkeit der Constructor Property Promotion vollständig zu verstehen, schauen wir uns weitere Beispiele in verschiedenen Szenarien an.
Beispiel 1: Definieren einer Buchklasse
class Book { public function __construct( public string $title, public string $author, public int $pages, public bool $isAvailable = true ) {} } $book = new Book('1984', 'George Orwell', 328); echo $book->title; // Output: 1984 echo $book->isAvailable; // Output: 1 (true)
In dieser Book-Klasse hat die Eigenschaft isAvailable den Standardwert true. Wenn Sie diesen Parameter beim Erstellen einer Instanz der Klasse nicht angeben, wird er automatisch auf true gesetzt.
Beispiel 2: Erstellen einer Auftragsklasse
class Order { public function __construct( public int $orderId, public string $product, public float $price, public string $status = 'pending' ) {} } $order = new Order(123, 'Laptop', 999.99); echo $order->status; // Output: pending $order2 = new Order(124, 'Smartphone', 599.99, 'shipped'); echo $order2->status; // Output: shipped
Hier enthält die Order-Klasse eine Statuseigenschaft mit dem Standardwert „pending“. Sie können diesen Wert jedoch überschreiben, indem Sie beim Erstellen der Bestellung einen anderen Status angeben.
Beispiel 3: Erstellen einer Benutzerprofilklasse
class UserProfile { public function __construct( public string $username, public string $email, public int $age, private string $password, protected string $role = 'user' ) {} public function getPassword(): string { return $this->password; } } $userProfile = new UserProfile('johndoe', 'john@example.com', 25, 'secret'); echo $userProfile->username; // Output: johndoe echo $userProfile->getPassword(); // Output: secret echo $userProfile->role; // Error: Cannot access protected property
In der UserProfile-Klasse ist die Passworteigenschaft privat, was bedeutet, dass außerhalb der Klasse nicht direkt darauf zugegriffen werden kann. Stattdessen verwenden Sie die Methode getPassword(), um es abzurufen. Die Rolleneigenschaft ist geschützt, daher kann nur innerhalb der Klasse selbst oder von Unterklassen auf sie zugegriffen werden.
Beispiel 4: Eine Produktklasse mit Bauherren-Promotion
class Product { public function __construct( public string $name, public float $price, public int $stock = 0 ) {} } $product = new Product('Laptop', 999.99, 10); echo $product->name; // Output: Laptop echo $product->stock; // Output: 10
Dieses Beispiel zeigt, wie Sie mit Constructor Property Promotion eine Produktklasse erstellen können, die einen Standardwert für die Aktieneigenschaft enthält.
**Weniger Boilerplate-Code: **Sie müssen keinen sich wiederholenden Code schreiben, um Eigenschaften zu deklarieren und zu initialisieren.
Erhöhte Lesbarkeit:Die Klassendefinition ist präziser und auf einen Blick leichter zu verstehen.
Reduzierte Fehler:Durch die Kombination von Eigenschaftsdeklaration und Initialisierung gibt es weniger Raum für Fehler.
Constructor Property Promotion in PHP 8 ist eine leistungsstarke Funktion, die die Art und Weise, wie Sie Klassen schreiben, erheblich verbessern kann. Durch die Reduzierung des Boilerplate-Codes, die Verbesserung der Lesbarkeit und die Wartbarkeit Ihres Codes ist es eine Funktion, die sowohl neue als auch erfahrene Entwickler zu schätzen wissen.
Ob Sie ein kleines Projekt oder eine große Anwendung erstellen, Constructor Property Promotion hilft Ihnen, saubereren und effizienteren PHP-Code zu schreiben. Probieren Sie es also bei Ihrem nächsten Projekt aus und genießen Sie die Vorteile dieser tollen Funktion!
Das obige ist der detaillierte Inhalt vonEin Leitfaden für Anfänger zur Förderung von Konstruktoreigenschaften in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!