Neue Features

PHP-Kern

Präfix für oktale Integer-Literale

Bei oktalen Integern ist es nun möglich, explizit 0o oder 0O als Präfix für numerische Literale anzugeben. Dies entspricht der Notation für binäre und hexadezimale Integer-Literale. Octal integers can now use an explicit

<?php
014
;  // Oktales Literal ohne Präfix
0o14// Oktales Literal mit Präfix
?>

Entpacken von Arrays mit String-Schlüsseln

Die Unterstützung für das Entpacken von Arrays mit String-Schlüsseln wurde hinzugefügt.

<?php
$arr1 
= [1'a' => 'b'];
$arr2 = [...$arr1'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>

Benannter Parameter nach dem Entpacken von Parametern

Es ist nun möglich, benannte Parameter nach einem entpackten Parameter anzugeben. z. B. foo(...$args, named: $arg).

Vollständiger Pfad beim Hochladen von Dateien

Datei-Uploads bieten nun einen zusätzlichen full_path-Schlüssel, der den vollständigen Pfad (und nicht nur den Basisnamen) der hochgeladenen Datei enthält. Dies ist für die Verwendung in Verbindung mit dem HTML-Attribut "webkitdirectory" gedacht.

Aufzählungen

Die Unterstützung für Aufzählungen wurde hinzugefügt.

Fibers

Die Unterstützung für Fibers wurde hinzugefügt.

Callback-Funktionen als Objekte erster Klasse

Closures für Callback-Funktionen können nun mit der Syntax myFunc(...) erstellt werden, die identisch ist zu Closure::fromCallable('myFunc').

Hinweis: Das ... ist keine Auslassung, sondern Teil der Syntax.

Überschneidungstypen (Intersection-Typen)

Die Unterstützung für Überschneidungstypen wurde hinzugefügt.

Achtung

Überschneidungstypen können nicht zusammen mit zusammengefassten Typen (Union-Typen) verwendet werden.

Never-Typ

Der neue Rückgabetyp never wurde hinzugefügt. Dieser zeigt an, dass eine Funktion entweder exit() aufruft, eine Exception auslöst, oder nicht beendet wird.

new in Initialisierungen

Es ist nun möglich, new ClassName()-Ausdrücke als Standardwert für die Initialisierung von Parametern, statischen Variablen und globalen Konstanten und als Eigenschafts-Parameter zu verwenden. Objekte können nun ebenfalls an define() übergeben werden.

Eigenschaften, die nur gelesen werden können

Die Unterstützung für readonly wurde hinzugefügt.

Finale Klassenkonstanten

Die Unterstützung für den Modifikator final für Klassenkonstanten wurde hinzugefügt. Außerdem werden Schnittstellenkonstanten standardmäßig überschreibbar.

CURL

Die Option CURLOPT_DOH_URL wurde hinzugefügt.

Zusätzliche Optionen für Blob-Zertifikate, falls libcurl >= 7.71.0:

  • CURLOPT_ISSUERCERT_BLOB
  • CURLOPT_PROXY_ISSUERCERT
  • CURLOPT_PROXY_ISSUERCERT_BLOB
  • CURLOPT_PROXY_SSLCERT_BLOB
  • CURLOPT_PROXY_SSLKEY_BLOB
  • CURLOPT_SSLCERT_BLOB
  • CURLOPT_SSLKEY_BLOB

Die Klasse CURLStringFile wurde hinzugefügt. Sie kann dazu verwendet werden, statt einer Datei eine Datei aus einem String zu senden:

<?php
$datei 
= new CURLStringFile($daten'dateiname.txt''text/plain');
curl_setopt($curlCURLOPT_POSTFIELDS, ['datei' => $datei]);
?>

FPM

Ein Openmetrics-Statusformat wurdet hinzugefügt. Es kann von Prometheus verwendet werden, um FPM-Metriken abzurufen.

Für den dynamischen Prozessmanager wurde eine neue Pool-Option namens pm.max_spawn_rate hinzugefügt. Sie ermöglicht ein schnelleres Starten einer Anzahl von Kindprozessen, wenn dynamisches PM ausgewählt ist. Der Standardwert ist 32, was der vorherige fest kodierte Wert war.

GD

Wenn libgd mit Avif-Unterstützung gebaut wurde, steht die Unterstützung von Avif nun über die Funktionen imagecreatefromavif() und imageavif() zur Verfügung.

Hash

Die Funktionen hash(), hash_file() und hash_init() unterstützen nun zusätzlich den optionalen Parameter options, der zur Übergabe von Algorithmus-spezifischen Daten verwendet werden kann.

MurmurHash3

Die Unterstützung für MurmurHash3 mit der Unterstützung für Streaming wurde hinzugefügt. Die folgenden Varianten sind implementiert:

  • murmur3a, 32-Bit-Hash
  • murmur3c, 128-Bit-Hash für x86
  • murmur3f, 128-Bit-Hash für x64

Der anfängliche Hash-Status kann durch den Schlüssel seed im Array options übergeben werden, zum Beispiel:

<?php
$h 
hash("murmur3f"$dataoptions: ["seed" => 42]);
echo 
$h"\n";
?>
Ein gültiger Seed-Wert liegt im Bereich von 0 bis zum plattformdefinierten UINT_MAX, normalerweise 4294967295.

xxHash

Die Unterstützung für xxHash wurde hinzugefügt. Die folgenden Varianten sind implementiert:

  • xxh32, 32-Bit-Hash
  • xxh64, 64-Bit-Hash
  • xxh3, 64-Bit-Hash
  • xxh128, 128-Bit-Hash

Der anfängliche Hash-Status kann durch den Schlüssel seed im Array options übergeben werden, zum Beispiel:

<?php
$h 
hash("xxh3"$dataoptions: ["seed" => 42]);
echo 
$h"\n";
?>
Die Verwendung eines geheimen Parameters wird durch Übergeben des Schlüssels secret im Array options ebenfalls unterstützt:
<?php
$h 
hash("xxh3"$dataoptions: ["secret" => "das Geheimnis muss hier mindestens 136 Bytes lang sein"]);
echo 
$h"\n";
?>
Die Qualität des benutzerdefinierten geheimen Parameters ist entscheidend für die Qualität des resultierenden Hashes. Es wird dringend empfohlen, für den geheimen Parameter die bestmögliche Entropie zu verwenden.

MySQLi

Neue INI-Directive mysqli.local_infile_directory

Die INI-Direktive mysqli.local_infile_directory wurde hinzugefügt. Sie kann verwendet werden, um ein Verzeichnis anzugeben, aus dem aus dem Dateien geladen werden dürfen. Sie ist nur dann relevant, wenn mysqli.allow_local_infile nicht aktiviert ist, da in diesem Fall alle Verzeichnisse erlaubt sind.

Parameter in execute binden

Es ist nun möglich, Parameter zu binden, indem sie als Array an mysqli_stmt::execute() übergeben werden. Alle Werte werden als Zeichenketten gebunden. Nur Listen-Arrays sind erlaubt. Diese neue Funktion ist nicht verfügbar wenn MySQLi mit libmysqlclient kompiliert wurde.

<?php
$stmt 
$mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1$username]);
?>

Neue Methode mysqli_result::fetch_column()

Die Methode mysqli_result::fetch_column() wurde hinzugefügt, um das Abrufen eines einzelnen skalaren Werts aus der Ergebnismenge zu ermöglichen. Die neue Methode akzeptiert den optionalen 0-basierten Parameter column vom Typ Integer, der angibt, aus welcher Spalte abgerufen werden soll.

<?php
$result 
$mysqli->query('SELECT username FROM users WHERE id = 123');
echo 
$result->fetch_column();
?>

PDO

Die Eigenschaft PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY wurde hinzugefügt. Damit kann ein Verzeichnis angegeben werden, aus dem Dateien geladen werden dürfen. Sie ist nur dann relevant, wenn PDO::MYSQL_ATTR_LOCAL_INFILE nicht aktiviert ist, da in diesem Fall alle Verzeichnisse erlaubt sind.

PDO_SQLite

Die DSN-Syntax "file:" von SQLite wird nun unterstützt, was die Angabe zusätzlicher Flags ermöglicht. Dieses Feature ist nicht verfügbar, wenn open_basedir gesetzt ist.

<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>

POSIX

POSIX_RLIMIT_KQUEUES und POSIX_RLIMIT_NPTS wurden hinzugefügt. Diese rlimits sind nur unter FreeBSD verfügbar.

Standard

Die Funktion fputcsv() akzeptiert nun den neuen Parameter eol, mit dem eine eigene Sequenz für das Zeilenende definiert werden kann. Die Vorgabe bleibt dieselbe wie bisher: "\n".

SPL

Die Methode SplFileObject::fputcsv() akzeptiert nun den neuen Parameter eol, mit dem eine eigene Sequenz für das Zeilenende definiert werden kann. Die Vorgabe bleibt dieselbe wie bisher: "\n".

Hier Kannst Du einen Kommentar verfassen


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

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

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

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

Notizen-App: was ist eure - ich komm immer wieder auf Keep zurück...

Hallo liebe Community, guten Abend, Notizen-App: was ist eure - ich komm immer wieder auf Keep zurück... was ist eure beste NoteTaking App!? i ...

Geschrieben von dhubs am 22.12.2024 23:05:11
Forum: Off-Topic Diskussionen
How to overcome Safari's iframe cookie block?

To overcome Safari's iframe cookie block, you can use the SameSite=None; Secure cookie attribute in conjunction with a third-party domain that sup ...

Geschrieben von Joniemartinez am 21.12.2024 13:28:24
Forum: HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
Probleme mit speichern in Datenbank in französisch

Les erreurs fréquentes lors de l'enregistrement de données dans une base de données incluent des problèmes de connexion, des erreurs de syntax ...

Geschrieben von Alice12 am 18.12.2024 05:07:21
Forum: PHP Developer Forum
Gibt es eine API zum Abrufen von PHP-Code-Referenzen?

PHP.net bietet eine umfassende Online-Dokumentation für PHP. Es gibt keine offizielle API zum Abrufen von PHP-Dokumentationen direkt, aber du kan ...

Geschrieben von Alice12 am 18.12.2024 05:03:27
Forum: PHP Developer Forum