Neue Features

PHP-Kern

Typisierte Eigenschaften

Klasseneigenschaften unterstützen nun Typ-Deklarationen.

<?php
class User {
    public 
int $id;
    public 
string $name;
}
?>
Das obige Beispiel erzwingt, dass $user->id nur int-Werte zugewiesen werden können und $user->name nur string-Werte.

Pfeilfunktionen

Die Pfeilfunktionen bieten eine Kurzform der Syntax für die Definition von Funktionen mit impliziter Bindung an den Wertebereich.

<?php
$factor 
10;
$nums array_map(fn($n) => $n $factor, [1234]);
// $nums = array(10, 20, 30, 40);
?>

Eingeschränkte Kovarianz des Rückgabetyps und Kontravarianz des Parametertyps

Der folgende Code funktioniert nun:

<?php
class {}
class 
extends {}

class 
Producer {
    public function 
method(): {}
}
class 
ChildProducer extends Producer {
    public function 
method(): {}
}
?>
Die vollständige Unterstützung der Varianz ist nur verfügbar, wenn automatisches Laden verwendet wird. Innerhalb einer einzelnen Datei sind nur nichtzyklische Typreferenzen möglich, da alle Klassen verfügbar sein müssen, bevor sie referenziert werden.

Zuweisungsoperator für die Kombination mit null (null-Koaleszenz)

<?php
$array
['key'] ??= computeDefault();
// entspricht in etwa
if (!isset($array['key'])) {
    
$array['key'] = computeDefault();
}
?>

Entpacken innerhalb von Arrays

<?php
$parts 
= ['apple''pear'];
$fruits = ['banana''orange', ...$parts'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
?>

Trennzeichen für numerische Literale

Bei numerischen Literalen können nun Unterstriche zwischen den Ziffern eingefügt werden.

<?php
6.674_083e
-11// Gleitkommazahl
299_792_458;   // Dezimalzahl
0xCAFE_F00D;   // Hexadezimalzahl
0b0101_1111;   // Binärzahl
?>

Schwache Referenzen

Eine schwache Referenz ermöglicht es dem Programmierer, eine Referenz auf ein Objekt zu behalten, die nicht verhindert, dass das Objekt zerstört wird.

Zulassen von Exceptions aus __toString()

Bei der Methode __toString() ist es nun möglich, Exceptions auszulösen. Zuvor führte dies zu einem schwerwiegenden Fehler. Alle behebbaren schwerwiegenden Fehler bei Zeichenketten-Konvertierungen wurden in Error-Exceptions umgewandelt.

CURL

Wenn die Erweiterung mit libcurl >= 7.56.0 kompiliert wurde, unterstützt die Klasse CURLFile nun zusätzlich zu einfachen Dateinamen auch Stream-Wrapper.

Filter

Der Filter FILTER_VALIDATE_FLOAT unterstützt nun die Optionen min_range und max_range mit der gleichen Semantik wie FILTER_VALIDATE_INT.

FFI

FFI ist eine neue Erweiterung, die eine einfache Möglichkeit bietet, native Funktionen aufzurufen, auf native Variablen zuzugreifen und Datenstrukturen zu erzeugen/aufzurufen, die in C-Bibliotheken definiert sind.

GD

Der Bildfilter IMG_FILTER_SCATTER wurde hinzugefügt, um einen Streufilter auf Bilder anzuwenden.

Hash

Der crc32c-Hash, der das Castagnoli-Polynom verwendet, wurde hinzugefügt. Diese CRC32-Variante wird in Speichersystemen wie iSCSI, SCTP, Btrfs und ext4 verwendet.

Multibyte-Zeichenketten

Die Funktion mb_str_split() wurde hinzugefügt. Sie bietet die gleiche Funktionalität wie str_split(), arbeitet aber mit Codepunkten anstelle von Bytes.

OPcache

Die Unterstützung für das Vorladen von Code wurde hinzugefügt.

Reguläre Ausdrücke (Perl-kompatibel)

Die Funktionen preg_replace_callback() und preg_replace_callback_array() akzeptieren nun zusätzlich den Parameter flags, der die Flags PREG_OFFSET_CAPTURE und PREG_UNMATCHED_AS_NULL unterstützt. Dies beeinflusst das Format des Arrays für die Übereinstimmungen, das an die Callback-Funktion übergeben wird.

PDO

Bei den Treibern für mysql, mssql, dblib, firebird und oci können Benutzername und Passwort nun als Teil des PDO DSN angegeben werden. Zuvor wurde dies nur vom pgsql-Treiber unterstützt. Wenn ein Benutzername/Passwort sowohl im Konstruktor als auch im DSN angegeben wird, hat der Konstruktor Vorrang.

Es ist nun möglich, Fragezeichen in SQL-Abfragen zu maskieren, damit sie nicht als als Platzhalter für Parameter interpretiert werden. Mit ?? ist es möglich, ein einzelnes Fragezeichen an die Datenbank zu senden. Dieses kann z. B. bei PostgreSQL als ?-Operator verwendet werden, um zu prüfen, ob ein JSON-Schlüssel existiert.

PDO_OCI

Die Methode PDOStatement::getColumnMeta() ist nun verfügbar.

PDO_SQLite

PDOStatement::getAttribute(PDO::SQLITE_ATTR_READONLY_STATEMENT) ermöglicht es, zu prüfen, ob eine Anweisung nur lesend ist, d. h., ob sie die Datenbank nicht verändert.

PDO::setAttribute(PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES, true) ermöglicht in PDO::errorInfo() und PDOStatement::errorInfo() die Verwendung der erweiterten SQLite3-Ergebniscodes.

SQLite3

Die Methode SQLite3::lastExtendedErrorCode() wurde hinzugefügt, um den letzten erweiterten Ergebniscode abzurufen.

SQLite3::enableExtendedResultCodes($enable = true) wurde hinzugefügt, was dazu führt, dass SQLite3::lastErrorCode() erweiterte Ergebniscodes zurückgibt.

Standard

strip_tags() mit einem Array von Tag-Namen

Die Funktion strip_tags() akzeptiert nun auch ein Array mit erlaubten Tags: Anstelle von strip_tags($str, '<a><p>') kann nun strip_tags($str, ['a', 'p']) geschrieben werden.

Benutzerdefinierte Serialisierung von Objekten

Es wurde ein neues Verfahren für die benutzerdefinierte Serialisierung von Objekten hinzugefügt, das zwei neue magische Methoden verwendet: __serialize und __unserialize.

<?php
// Gibt ein Array zurück, das alle notwendigen Zustände des Objekts enthält.
public function __serialize(): array;

// Stellt den Objektzustand aus dem angegebenen Datenarray wieder her.
public function __unserialize(array $data): void;
?>
Das neue Serialisierungsverfahren ersetzt die Schnittstelle Serializable, die in Zukunft für veraltet erklärt werden wird.

Verwendung der array_merge-Funktionen ohne Parameter

Die Funktionen array_merge() und array_merge_recursive() können nun auch ohne Parameter aufgerufen werden und geben in diesem Fall ein leeres Array zurück. Dies ist nützlich in Verbindung mit dem Spread-Operator (Zerlegungsoperator), z. B. array_merge(...$arrays).

Die Funktion proc_open()

proc_open() akzeptiert für den Befehl nun ein Array anstelle einer Zeichenkette. In diesem Fall wird der Prozess direkt geöffnet (ohne den Umweg über eine Shell) und PHP kümmert sich bei Bedarf darum, die Parameter zu maskieren.

<?php
proc_open
(['php''-r''echo "Hello World\n";'], $descriptors$pipes);
?>

proc_open() unterstützt nun die Deskriptoren redirect und null.

<?php
// Wie 2>&1 in der Shell
proc_open($cmd, [=> ['pipe''w'], => ['redirect'1]], $pipes);
// Wie 2>/dev/null oder 2>nul in der Shell
proc_open($cmd, [=> ['pipe''w'], => ['null']], $pipes);
?>

argon2i(d) ohne libargon

Wenn PHP ohne libargon gebaut wird, hat password_hash() nun die argon2i- und argon2id-Implementierungen aus der Erweiterung Sodium.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Definition von Stored Procedures - eine Einführung

Stored Procedures sind vordefinierte SQL-Codeblöcke, die in einer Datenbank gespeichert sind und bei Bedarf aufgerufen werden können. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

MovieClip leeren (AS3)

Ich war wirklich besorgt um meine bachelorarbeit schreiben lassen​ (https://xn--ghostwriter-sterreich-sec.at/bachelorarbeit-schreiben-lassen/). ...

Geschrieben von Farebn am 26.04.2024 22:50:34
Forum: Grafik / Design / Flash ...
Berechnungen durchführen

Hallo liebe Forenmitglieder, meine erste frage ist zum Aufbau meiner kleinen Berechnungswebseite, nichts kommerzielles, soll nur eine Anwendung f ...

Geschrieben von matze511 am 21.04.2024 21:42:37
Forum: PHP Developer Forum
Professioneller Webentwickler & Webdesigner

Of course, here is the translation: Hello, Thank you for your interest in the long-term project. Your extensive skills and experience in web dev ...

Geschrieben von Athelstan am 15.04.2024 09:25:39
Forum: Jobgesuche
Wir stellen unsere SEO-Agentur vor

Hallo In der heutigen digitalen Welt war es für Unternehmen noch nie so einfach, ihre Reichweite weltweit zu vergrößern. Wenn Sie außerhalb I ...

Geschrieben von thomasmuller am 14.04.2024 07:18:33
Forum: User stellen sich vor