PHP 8.4 ist endlich da und bringt aufregende Änderungen mit sich, die die Arbeitsweise von Entwicklern verändern werden! Mit jeder neuen Version beweist PHP immer wieder, warum es ein so unverzichtbares Werkzeug in der heutigen Webentwicklungslandschaft ist.
Voraussetzungen
In diesem Artikel wird davon ausgegangen, dass Sie über Grundkenntnisse der Programmiersprache PHP verfügen.
Software, die ich für die PHP-Entwicklung verwende
Laravel Herd: Wird zur Verwaltung meiner PHP-Versionen und meines Nginx-Servers verwendet.
PHPStorm: Eine großartige IDE mit gutem IntelliSense und KI-Copilot.
Laragon: Eine benutzerfreundliche lokale Entwicklungsumgebung, die PHP und andere Technologien unterstützt.
Asymmetrische Eigenschaftssichtbarkeit (Version 2)??
In PHP war die Sichtbarkeit von Objekteigenschaften traditionell symmetrisch. Das bedeutet, dass die Get- und Set-Vorgänge für eine Eigenschaft dieselbe Sichtbarkeit haben müssen – öffentlich, privat oder geschützt –, sich aber nicht unterscheiden dürfen.
Wenn beispielsweise eine Eigenschaft öffentlich ist, sind sowohl das Lesen als auch das Schreiben darauf öffentlich, und es gibt keine Möglichkeit, einen Vorgang ohne den anderen zuzulassen.
Wenn Sie im Kontext eine Eigenschaft einer Klasse als öffentlich deklarieren, wird sie veränderbar, sodass sie von außerhalb der Klasse gelesen und geändert werden kann.
Mit dem Aufkommen der asymmetrischen Sichtbarkeit können Sie jetzt jedoch separate Bereiche für Lese- und Schreibeigenschaften definieren.
Das bedeutet, dass eine Eigenschaft in einem Kontext lesbar und in einem anderen beschreibbar sein kann, was eine bessere Kontrolle darüber bietet, wie auf Eigenschaften zugegriffen und diese geändert werden.
class Animal{ public private(set) string $name; public setName(string $foo){ $ths->name = $foo; } } $animal = new Animal(); echo $animal->name; // This will run correctly
Wir können eine Eigenschaft öffentlich machen lassen und die festgelegte Eigenschaft privat machen. Dies bedeutet, dass die Eigenschaft nicht außerhalb der Klasse aktualisiert werden kann und somit unveränderlich ist.
Wenn Sie versuchen, die Eigenschaft „$name“ zu ändern, wird eine Fehlermeldung angezeigt, dass Sie die Eigenschaft aufgrund des Sichtbarkeitsbereichs nicht ändern können.
Hier sind einige wichtige Punkte, die Sie zur asymmetrischen Sichtbarkeit beachten sollten:
Leerzeichen sind in der Set-Visibility-Deklaration nicht zulässig. private(set) ist korrekt. private( set ) ist nicht korrekt und führt zu einem Analysefehler.
Wenn eine Immobilie als öffentlich deklariert ist, kann die Hauptsichtbarkeit weggelassen werden. Beispielsweise verhalten sich „public private(set)“ und „private(set)“ identisch, da die öffentliche Sichtbarkeit impliziert ist.
Nur typisierte Eigenschaften dürfen eine separate Sichtbarkeit für Set-Operationen haben. Dies bedeutet, dass Sie in PHP keine asymmetrische Sichtbarkeit auf untypisierte Eigenschaften anwenden können.
Die festgelegte Sichtbarkeit muss mit der get-Sichtbarkeit identisch oder restriktiver sein. Beispielsweise sind public protected(set) und protected protected(set) gültig, aber protected public(set) führt zu einem Syntaxfehler.
Erfahren Sie mehr über die Sichtbarkeit von Asymmetrien, einschließlich anderer Beispiele zum Nachlesen.
Immobilienhaken?
Property Hook ist eine großartige Funktion von PHP 8.4, die Entwicklern die Möglichkeit bietet, Get- und Set-Direktiven direkt zu einer Variablen hinzuzufügen, ohne ausdrücklich Methoden zum Lesen und Schreiben der Variablen zu erstellen.
Alternativ können die magischen Methoden __get und __set verwendet werden, aber dadurch wird der Code ausführlicher, es können Fehler auftreten und statische Analysetools werden beschädigt.
Man kann mit Sicherheit sagen, dass das Design und die Syntax von Eigenschafts-Hooks denen von Kotlin ähneln, aber hauptsächlich von den Programmiersprachen C# und Swift beeinflusst werden.
In PHP 8.3 können wir eine Klasse mit einer Eigenschaft in ihrem Konstruktor erstellen, und sie gibt uns die Möglichkeit, die Eigenschaft zu lesen und zu schreiben.
class Animal{ public private(set) string $name; public setName(string $foo){ $ths->name = $foo; } } $animal = new Animal(); echo $animal->name; // This will run correctly
Das Problem bei diesem Ansatz besteht darin, dass wir, wenn wir uns entscheiden, in die Eigenschaft zu schreiben, entweder die magische Methode __set verwenden oder ausdrücklich eine Methode zum Mutieren der Variablen erstellen, was später zu einem Bruch in der Codebasis führen könnte.
Eigenschafts-Hooks ermöglichen es Entwicklern, sofort nach dem Erstellen der Eigenschaft eine Set-Direktive zu erstellen.
class Car { public function __construct(public string $model) { } }
Beachten Sie, dass der an die Set-Direktive übergebene Wert vom gleichen Typ wie die Eigenschaft sein muss, sonst wird ein Fehler ausgegeben.
Sie können der Set-Direktive einen anderen Typ übergeben und ihn in den richtigen Typ konvertieren, bevor Sie in die Eigenschaft schreiben, wie unten gezeigt:
class Car{ public string $model{ set (string $value) { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } } }
Das obige Beispiel zeigt, wie wir eine zusammengesetzte Typvariable sicher von der Set-Direktive empfangen und sie in den richtigen, durch die Eigenschaft definierten Typ analysieren können.
Sie können das an die Set-Direktive übergebene Argument weglassen, wenn es mit dem Eigenschaftstyp übereinstimmt. Beispielsweise sind die beiden folgenden Methoden gültig und verhalten sich ähnlich.
class Car{ public string $year{ set (string|number $value) { $year = intval($value); if($year year= $value; } } }
Beachten Sie, dass das Argument standardmäßig $value ist, wenn es weggelassen wird. Diese Syntax ist in Programmiersprachen wie Kotlin und C# üblich.
Instanziieren von Klassen ohne zusätzliche Klammern
Vor dieser Funktion erforderte der Zugriff auf Mitglieder einer Klasse in PHP das Hinzufügen zusätzlicher Klammern um die Klasse.
// --------------------------METHOD 1---------------------------- public string $model{ set (string $value) { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } } // --------------------------METHOD 2---------------------------- public string $model{ set { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } }
Wenn Sie den neuen Car()-Aufruf nicht in Klammern setzen, erhalten Sie einen Analysefehler.
Die neue Syntax ermöglicht uns den Zugriff auf Methoden, Eigenschaften und Konstanten, ohne dass zusätzliche Klammern erforderlich sind.
class Car { public function getName(){ return "Toyota Camry"; } } $carName = (new Car())->getName();
Eine vollständige Aufschlüsselung dieser vorgeschlagenen Änderung finden Sie in den Details im RFC.
Einführung neuer Array-Funktionen
Neue Hilfsfunktionen kommen zu PHP 8.4.
Einige dieser Funktionen sind bereits in Laravel Arr oder Collection-Helfern implementiert.
Die Funktion array_find_key()
Die Funktion array_find_key($array, $callback) gibt den Schlüssel des ersten Elements zurück, für das die Methode $callback true zurückgibt. Wenn kein Element die Bedingung erfüllt, gibt die Funktion null zurück.
class Animal{ public private(set) string $name; public setName(string $foo){ $ths->name = $foo; } } $animal = new Animal(); echo $animal->name; // This will run correctly
Die Funktion array_find()
Die Funktion array_find_key() dient dazu, ein Array zu durchsuchen und den Schlüssel des ersten Elements zurückzugeben, das eine durch eine Rückruffunktion definierte Bedingung erfüllt.
Ähnlich wie array_find_key() gibt es null zurück, wenn kein passendes Element gefunden wird.
class Car { public function __construct(public string $model) { } }
Wenn keine Frucht im Array eine Menge größer als 10 hätte, würde die Funktion null zurückgeben.
Die Funktion array_any()
Die Funktion array_any() bestimmt, ob mindestens ein Element innerhalb eines Arrays ein bestimmtes Kriterium erfüllt, das durch eine bereitgestellte Bewertungsfunktion angegeben wird.
Wenn mindestens ein Element die Bedingung erfüllt, gibt die Funktion „true“ zurück; andernfalls wird false zurückgegeben.
class Car{ public string $model{ set (string $value) { if(strlen($value) === 0){ throw new ValueError("Model name cannot be empty"); } $this->model = $value; } } }
Wenn keine Zahl im Array größer als 10 ist, gibt die Funktion „false“ zurück.
Die Funktion array_all()
Die Funktion array_all() prüft, ob jedes einzelne Element in einem Array einen bestimmten Test besteht. Es wendet eine spezielle Regel (die Callback-Funktion) auf jedes Element an.
Wenn alle Elemente den Test gemäß der Regel bestehen, gibt array_all() true zurück.
class Car{ public string $year{ set (string|number $value) { $year = intval($value); if($year year= $value; } } }
In diesem Beispiel durchläuft die Funktion array_all() das Array $numbers und wendet die Rückruffunktion auf jedes Element an. Der Rückruf prüft, ob die Zahl durch 2 teilbar (also gerade) ist.
Da alle Zahlen im Array gerade sind, gibt die Funktion array_all() true zurück und die Meldung „Alle Zahlen sind gerade.“ wird angezeigt.
Wir haben die wichtigsten Verbesserungen untersucht, die in PHP 8.4 eingeführt wurden. Diese Updates bieten wertvolle Verbesserungen für Entwickler, einschließlich leistungsstarker neuer Funktionen und potenzieller Effizienzsteigerungen.
Um tiefer in alle Updates einzutauchen, einschließlich Beispielen und detaillierten Erklärungen, besuchen Sie die offizielle Seite mit der Ankündigung der Veröffentlichung von PHP 8.4.0.
Vergessen Sie nicht, die veralteten Versionen und Abwärtskompatibilitätsänderungen zu überprüfen, um einen reibungslosen Übergang zur neuesten Version zu gewährleisten.
Was kommt als nächstes? ?
Wenn Ihnen der Artikel gefallen hat, vergessen Sie nicht, ihn mit anderen zu teilen.
Ich würde gerne Ihre Gedanken hören – schreiben Sie unten einen Kommentar und lassen Sie uns das Gespräch am Laufen halten. Prost! ?
Folgen Sie mir für weitere PHP-, Node.js-, TypeScript- und PHP-Artikel! Sie können mich auch auf Twitter oder LinkedIn finden.
Das obige ist der detaillierte Inhalt vonPHP: Top-Funktionen und Verbesserungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Nach seiner hochkarätigen Akquisition durch Facebook im Jahr 2012 nahm Instagram zwei APIs für den Einsatz von Drittanbietern ein. Dies sind die Instagram -Graph -API und die Instagram Basic Display -API. Ein Entwickler, der eine App erstellt, die Informationen von a benötigt

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Dreamweaver Mac
Visuelle Webentwicklungstools

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.
