Nicht abwärtskompatible Änderungen

number_format() gibt keine negativen Nullen zurück

In früheren Versionen konnte die Funktion number_format() -0 zurückgeben. Dies ist zwar für Gleitkommazahlen nach dem Standard IEEE-754 durchaus zulässig, aber in Bezug auf die Formatierung der Zahlen in einer für den Menschen lesbaren Form war diese Eigenart nicht wünschenswert.

<?php

var_dump
(number_format(-0.01)); // gibt nun string(1) "0" anstelle von string(2) "-0" aus

Behandlung numerischer Schlüssel bei Umwandlungen zwischen Objekten und Arrays

Numerische Schlüssel werden nun besser behandelt, wenn Arrays in Objekte und Objekte in Arrays umgewandelt werden. Dies gilt nicht nur für explizite Umwandlungen, sondern auch für die Verwendung von settype().

Das bedeutet, dass auf die (zeichenkettenartigen) Integer-Schlüssel eines Arrays, das in ein Objekt umgewandelt wird, nun zugegriffen werden kann:

<?php

// Array zu Objekt
$arr = [=> 1];
$obj = (object)$arr;
var_dump(
    
$obj,
    
$obj->{'0'}, // nun verfügbar
    
$obj->{0// nun verfügbar
);

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

object(stdClass)#1 (1) {
  ["0"]=>    // nun ein Zeichenketten-Schlüssel anstelle eines Integer-Schlüssels
  int(1)
}
int(1)
int(1)

Genauso kann nun auf die (zeichenkettenartigen) Integer-Schlüssel eines Objekts, das in ein Array umgewandelt wird, zugegriffen werden:

<?php

// object to array
$obj = new class {
    public function 
__construct()
    {
        
$this->{0} = 1;
    }
};
$arr = (array)$obj;
var_dump(
    
$arr,
    
$arr[0], // nun verfügbar
    
$arr['0'// nun verfügbar
);

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

array(1) {
  [0]=>    // nun ein Integer-Schlüssel anstelle eines Zeichenketten-Schlüssels
  int(1)
}
int(1)
int(1)

Keine Übergabe von null an get_class()

Bisher wurde bei der Übergabe von null an die Funktion get_class() der Name der umschließenden Klasse ausgegeben. Dieses Verhalten wurde nun entfernt und es wird stattdessen ein Fehler der Stufe E_WARNING ausgegeben. Um das beschriebene Verhalten wiederherzustellen, sollte der Parameter einfach weggelassen werden.

Warnung beim Zählen nicht zählbarer Typen

Wenn versucht wird, nicht zählbare Typen mittels count() zu zählen, wird nun ein Fehler der Stufe E_WARNING ausgegeben (dies gilt auch für die Alias-Funktion sizeof()).

<?php

var_dump
(
    
count(null), // NULL ist nicht zählbar
    
count(1), // Integer sind nicht zählbar
    
count('abc'), // Zeichenketten sind nicht zählbar
    
count(new stdclass), // Objeke, die die Countable-Schnittstelle nicht implementieren, sind nicht zählbar
    
count([1,2]) // Arrays sind zählbar
);

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d

Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d
int(0)
int(1)
int(1)
int(1)
int(2)

ext/hash verwendet Objekte statt Ressourcen

Als Teil der langfristigen Umstellung weg von Ressourcen wurde die Erweiterung Hash dahingehend überarbeitet, dass nun Objekte anstelle von Ressourcen verwendet werden. Die Änderung sollte für PHP-Entwickler problemlos vonstatten gehen, mit Ausnahme der Fälle, in denen Überprüfungen mit der Funktion is_resource() durchgeführt werden (diese müssen auf is_object() umgestellt werden).

Verbesserung der SSL/TLS-Standardeinstellungen

Folgendes wurde an den Standardeinstellungen geändert:

  • tls:// ist nun standardmäßig auf TLSv1.0 oder TLSv1.1 oder TLSv1.2 eingestellt
  • ssl:// ist nun ein Alias für tls://
  • Die STREAM_CRYPTO_METHOD_TLS_*-Konstanten sind nun standardmäßig auf TLSv1.0 oder TLSv1.1 + TLSv1.2 eingestellt, statt nur auf TLSv1.0

Rückgabewert von gettype() bei geschlossenen Ressourcen

Bisher gab gettype() bei einer geschlossenen Ressource die Zeichenkette "unknown type" zurück. Nun wird die Zeichenkette "resource (closed)" zurückgegeben.

is_object() und __PHP_Incomplete_Class

Bisher gab die Funktion is_object() bei der Klasse __PHP_Incomplete_Class false zurück. Nun gibt sie true zurück.

Erhöhung der Fehlerstufe bei undefinierten Konstanten

Unvollständig definierte Referenzen auf undefinierte Konstanten erzeugen nun einen Fehler der Stufe E_WARNING (statt E_NOTICE). In der nächsten Hauptversion von PHP werden sie Error-Exceptions auslösen.

Windows-Unterstützung

Die derzeit niedrigsten offiziell unterstützten Windows-Version sind Windows 7/Server 2008 R2.

Überprüfung der Standard-Eigenschaftswerte von Traits

Bei Kompatibilitätsprüfungen von Standard-Eigenschaftswerten von Traits werden nun keine Typumwandlungen mehr durchgeführt.

object als Klassenname

Die Bezeichnung object war in PHP 7.0 bisher weich reserviert. Nun ist sie hart reserviert, d. h., sie kann nicht mehr als Name für Klassen, Traits oder Schnittstellen verwendet werden.

NetWare-Unterstützung

Die Unterstützung für NetWare wurde entfernt.

array_unique() mit SORT_STRING

Während array_unique() mit SORT_STRING früher das Array kopiert und nicht eindeutige Elemente entfernt hat (ohne das Array anschließend zu packen), wird nun ein neues Array erstellt, das aus den eindeutigen Elementen besteht. Dies kann zu unterschiedlichen numerischen Indizes führen.

Änderungen an bcmod() bei Gleitkommazahlen

Die Funktion bcmod() reduziert Gleitkommazahlen nicht mehr auf Ganzzahlen. Daher entspricht ihr Verhalten nun der Funktion fmod() und nicht mehr dem Operator %. Zum Beispiel liefert bcmod('4', '3.5') nun 0.5 anstelle von 1.

Hashing-Funktionen und nicht-kryptographische Hashes

Die Funktionen hash_hmac(), hash_hmac_file(), hash_pbkdf2() und hash_init() (mit HASH_HMAC) akzeptieren keine nicht-kryptographischen Hashes mehr.

Funktionsoptionen für json_decode()

Wenn bei der Funktion json_decode() der zweite Parameter (assoc) null ist, wird nun die Funktionsoption JSON_OBJECT_AS_ARRAY verwendet. Zuvor wurde JSON_OBJECT_AS_ARRAY immer ignoriert.

Die Rückgabewerte von rand() und mt_rand()

Die Sequenzen, die von den Funktionen rand() und mt_rand() für einen bestimmten Seed erzeugt werden, können sich auf 64-Bit-Systemen von den in PHP 7.1 erzeugten unterscheiden (aufgrund eines behobenen Modulo-Bias-Fehlers in der Implementierung).

INI-Einstellung sql.safe_mode entfernt

Die INI-Einstellung sql.safe_mode wurde entfernt.

Änderungen an date_parse() und date_parse_from_format()

Das Element zone des Arrays, das von den Funktionen date_parse() und date_parse_from_format() zurückgegeben wird, zeigt nun Sekunden anstelle von Minuten, und sein Vorzeichen wurde umgedreht. So wird zum Beispiel -120 nun zu 7200.

Eingehende Cookies

Seit PHP 7.2.34 werden die Namen eingehender Cookies aus Sicherheitsgründen nicht mehr URL-dekodiert.

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