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.

Neuigkeiten für PHP-Entwickler: Laravel 11 Veröffentlichung

Am 12. März 2024 wurde die lang erwartete Version 11 des Laravel-Frameworks veröffentlicht, die eine Reihe von spannenden Neuerungen und Verbesserungen für die PHP-Entwicklungsgemeinschaft mit sich bringt. ...

Mike94

Autor : Mike94
Kategorie: PHP Magazin

Technisches SEO bleibt relevant

Technisches SEO – Was ist das überhaupt? Technisches SEO bezieht sich auf die Optimierung der technischen Aspekte deiner Webseite. Das Ziel ist klar! ...

admin

Autor : admin
Kategorie: SEO & Online-Marketing

Was ist neu in der PHP 8.2.10

PHP 8.2.10 ist eine der neuesten Versionen von PHP, die eine Reihe von Verbesserungen und neuen Funktionen mit sich bringt. In diesem Artikel werden wir einige der herausragenden Neuerungen und Verbesserungen dieser Version diskutieren. ...

admin

Autor : admin
Kategorie: Software-Updates

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

Seltsames Verhalten von execute() oder Fehler meinerseits

Hallo liebe Community, ich habe ein kleines Problem und vielleicht kann mir ja jemand helfen, würde ich mich sehr drüber freuen. Unten steht e ...

Geschrieben von garibaldiwz am 22.03.2024 13:03:12
Forum: SQL / Datenbanken
Google reCAPTCHA in Kontaktformular einbinden

Überprüfen Sie den E-Mail-Versand: Stellen Sie sicher, dass die E-Mail-Funktion mail() ordnungsgemäß funktioniert und dass keine Fehler beim V ...

Geschrieben von Gast am 18.03.2024 04:54:16
Forum: PHP Developer Forum
`count.php`

Hallo cober93327, und Danke fuer deine Antwort! :-) Naja, so einen "Besucherzähler" auf der Webseite anzuzeigen ist schon eher etwas, das man a ...

Geschrieben von kekse1 am 17.03.2024 15:56:38
Forum: Projekthilfe
`count.php`

Es gibt dazu natuerlich auch eine recht ausfuehrliche Dokumentation in meinem GitHub-Repository Es würde meiner Ansicht nach enorm helfen, wenn D ...

Geschrieben von cober93327 am 14.03.2024 15:49:28
Forum: Projekthilfe