- Enthält Property Hooks, asymmetrische Sichtbarkeit, eine aktualisierte DOM-API, Performance-Verbesserungen, Bugfixes und allgemeines Aufräumen
- Property Hooks ermöglichen berechnete Eigenschaften, die von IDEs und statischen Analysetools nativ verstanden werden können
- Einführung asymmetrischer Sichtbarkeit, mit der sich Lese- und Schreibzugriff auf Eigenschaften unabhängig voneinander steuern lassen.
- Neue Funktionen
- Über das Attribut
#[\Deprecated] kann der bestehende PHP-Mechanismus zur Ausmusterung auf benutzerdefinierte Funktionen, Methoden und Klassenkonstanten angewendet werden.
- Die neue DOM-API umfasst standardkonforme Unterstützung für das Parsen von HTML5-Dokumenten und behebt mehrere alte Kompatibilitätsfehler der DOM-Funktionalität.
- Mit dem Objekt
BcMath\Number lassen sich Zahlen mit beliebiger Genauigkeit objektorientiert verarbeiten.
- Neue Array-Funktionen wie
array_find(), array_find_key(), array_any(), array_all().
- Neue PDO-Subklassen: Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite.
- Auf Eigenschaften und Methoden neu instanziierter Objekte kann ohne Klammern zugegriffen werden.
- Neue Klassen, Interfaces und Funktionen
- Neue Lazy Objects, JIT-Implementierung auf Basis des IR Frameworks.
- Funktion
request_parse_body() sowie bcceil(), bcdivmod(), bcfloor(), bcround() hinzugefügt.
- Methoden wie
DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond() hinzugefügt.
- Funktionen
mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst() hinzugefügt.
- Funktionen
pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid() hinzugefügt.
- Methoden
ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), ReflectionProperty::isDynamic() hinzugefügt.
- Funktionen
http_get_last_response_headers(), http_clear_last_response_headers(), fpow() hinzugefügt.
- Methoden
XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), XMLWriter::toMemory() hinzugefügt.
- Funktion
grapheme_str_split() hinzugefügt.
- Ausmusterungen und Breaking Changes
- Die Erweiterungen IMAP, OCI8, PDO_OCI und pspell wurden aus dem Bundle entfernt und nach PECL verschoben.
- Implizit nullable Parametertypen sind veraltet.
- Die Verwendung von _ als Klassenname ist veraltet.
- Das Potenzieren von 0 mit einem negativen Exponenten ist veraltet.
- Wird ein ungültiger Modus an
round() übergeben, wird ein ValueError ausgelöst.
- Klassenkonstanten von Erweiterungen sind jetzt typisiert.
- Die GMP-Klasse ist jetzt als final markiert.
- MYSQLI-bezogene Konstanten und Funktionen sind veraltet.
stream_bucket_make_writeable() und stream_bucket_new() geben jetzt eine StreamBucket-Instanz zurück.
- Geändertes Verhalten von
exit().
- Die Konstante E_STRICT ist veraltet.
- Performance- und Syntaxverbesserungen
- Verbesserte Performance, Syntax-Verbesserungen und höhere Typsicherheit.
- Upgrade auf PHP 8.4 empfohlen.
3 Kommentare
Dank WordPress und Laravel ist es wenigstens eine Sprache, mit der man nicht verhungert.
Auch wenn WordPress und Laravel untergehen, ist das eine Sprache, mit der man nicht verhungert.
Hacker-News-Kommentare
Warum
$this->countryCodekeine unendliche Rekursion auslöst, ist im RFC festgelegt. Es wirkt fast magisch, dass der Eigenschaftszugriff in PHP je nach Kontext unterschiedliche Bedeutungen haben kann.Als PHP-Programmierer mache ich mir Sorgen über die Richtung, in die sich PHP entwickelt. Neue Sprachfeatures erhöhen die Komplexität der Sprache für fragwürdigen Nutzen.
Ich freue mich, dass PHP immer noch floriert. 2021 war ich wegen Nikita Popovs Weggang besorgt, aber PHP ist immer noch eine gute Sprache, und viele Entwickler sind weiterhin aktiv.
Auf Property Hooks freue ich mich am meisten. Das ist eine Funktion, die ich aus C# vermisst habe.
__get()und__set()nachgebaut, aber das ist schwergewichtig und erforderte viele PHPDoc-Kommentare.Beim Anschauen von Overloading für Array-Accessoren bin ich auf "Property Hooks" gestoßen. Ich war überrascht zu erfahren, dass es sich um ein kürzlich hinzugefügtes Feature handelt.
Ich bin mit dem neuen PHP-Release zufrieden. Es gibt viele Verbesserungen: besseres Stack-Tracking für Closures, Performance-Verbesserungen, HTML5-Unterstützung, Lazy Objects und mehr.
Ich freue mich auf bcmath-Objekte. Mehr noch als auf arithmetische Operatoren gefällt mir, dass nun Typprüfungen ohne Wrapper-Klassen möglich sind.
Ich freue mich, dass PHP sich weiterhin entwickelt. Das erinnert mich an die Zeit, als ich als Freelancer angefangen habe.
Die neue
array_find-Funktion in PHP zeigt ein Problem im Sprachdesign. Sie ähnelt der bestehendenarray_search, aber die Argumentreihenfolge ist anders.Ich verstehe "public private(set)" nicht. "readonly public" wirkt passender.
private(set)in Swift zu sein.