Autres changementsAmélioration des PerformancesCœur de PHP
Un opcode de VM spécialisé pour la fonction
array_key_exists a été ajouté, ceci améliore les
performances de cette fonction si elle peut être résolue statiquement.
Dans du code sous un espace de nom, ceci peut nécessiter d'écrire
\array_key_exists() ou importer explicitement la fonction.
Expressions Régulières (Compatible Perl)
Quand preg_match en mode UTF-8 (modificateur
"u") est appelée à plusieurs reprises sur la même &string;
(mais possiblement à différentes positions), elle ne sera vérifiée qu'une seule
fois pour la validité UTF-8.
Modifications Apportées à la Gestion de Fichiers INI
zend.exception_ignore_args
est une nouvelle directive INI pour inclure ou exclure les arguments des
traces de pile générées par les exceptions.
opcache.preload_user est une
nouvelle directive INI permettant de spécifier le compte utilisateur ayant
pour rôle d'exécuter le code pré-chargé (l'utilisateur root n'est pas
autorisé pour des raisons de sécurité).
Migration vers pkg-config
Un nombre d'extensions a été migré pour utiliser exclusivement pkg-config
pour la détection des dépendances de bibliothèques. Généralement, ceci
signifie qu'au lieu d'utiliser
ou similaire seul
est utilisé. Les chemins de
bibliothèques personnalisées peuvent être spécifiés soit en ajoutant des
dossiers supplémentaires à PKG_CONFIG_PATH soit en
spécifiant les options de compilations explicitement à travers
FOO_CFLAGS et FOO_LIBS.
Les extensions et SAPIs suivantes sont affectées :
CURL :
n'accepte plus un dossier.
Enchant :
n'accepte plus un dossier.
FPM :
utilise désormais
uniquement pkg-config pour les vérifications libsystem.
La version minimale libsystemd requise est 209.
GD :
devient
(pour activer l'extension) et
(pour opter pour l'utilisation d'un libgd externe, plutôt que celui fourni).
a été supprimé. libpng est requis.
a été supprimé. zlib est requis.
devient
devient
devient
devient
IMAP :
n'accepte plus un dossier.
Intl :
a été supprimé.
Si est passé,
alors libicu est toujours requis.
LDAP :
n'accepte plus un dossier.
Libxml :
a été supprimé.
devient
.
a été renommé en
et n'accepte plus un dossier.
Litespeed :
devient
.
Mbstring :
a été supprimé.
Sauf si
a été passé, libonig est requis.
ODBC :
n'accepte plus un dossier.
sans un dossier utilise
désormais phg-config (préférable). Le dossier est toujours accepté pour
les anciennes versions sans libodbc.pc.
OpenSSL :
n'accepte plus un dossier.
PCRE :
a été supprimé.
À la place
est offert pour opter pour l'utilisation d'une bibliothèque PCRE externe,
plutôt que celle fournie.
PDO_SQLite :
n'accepte plus un dossier.
Readline :
n'accepte plus un dossier.
Sodium :
n'accepte plus un dossier.
SQLite3 :
n'accepte plus un dossier.
XSL :
n'accepte plus un dossier.
Zip :
a été supprimé.
devient
.
Échappement CSVfputcsv,
fgetcsv,
SplFileObject::fputcsv,
SplFileObject::fgetcsv, et
SplFileObject::setCsvControl
acceptent désormais une &string; vide en tant qu'argument
$escape, qui désactive le mécanisme d'échappement
propriétaire de PHP.
Le comportement de str_getcsv a été ajusté en
conséquence (auparavant, une &string; vide était identique à
utiliser les valeurs par défaut).
SplFileObject::getCsvControl peut, par conséquent
désormais aussi retourner une &string; vide pour le troisième élément du &array;.
Filtrage de Données
L'extension filter n'expose plus
pour les builds Unix et
peut désormais être compilée de manière fiable en tant que partagé lors
de l'utilisation de ./configureGD
Le comportement de imagecropauto dans la bibliothèque
libgd fourni a été synchronisé avec celui de libgd système :
IMG_CROP_DEFAULT ne se replie plus sur
IMG_CROP_SIDES
Le seuil de recadrage (Threshold-cropping) utilise désormais l'algorithme
de libgd système.
La paramètre par défaut $mode de
imagecropauto a été modifié en
IMG_CROP_DEFAULT ; fournir -1
est désormais obsolète.
imagescale supporte désormais la préservation du
rapport hauteur / largeur lors de la mise à l'échelle à une hauteur fixe
en passant -1 à $new_width.
HASH Message Digest Framework
L'extension hash ne peut plus être
désactivée et fait toujours partie intégrante de n'importe quel build PHP,
similaire à l'extension date.
Intl
L'extension intl requiert désormais au moins
ICU 50.1.
ResourceBundle implémente désormais
Countable.
Lightweight Directory Access Protocol (LDAP)
Le support pour nsldap et umich_ldap a été supprimé.
Libxml
Toutes les extensions basées sur libxml nécessitent libxml 2.7.6 ou ultérieur.
Chaînes multioctets
La bibliothèque oniguruma n'est plus fournie avec PHP, à la place libonig
doit être disponible sur le système. Alternativement
peut être utilisé pour
désactiver le composant mbregex.
OPcache
Les options de configurations
et
ont été supprimées
en faveur de la directive INI
opcache.file_cache.
Hachage de Mot de Passe
Les fonctions password_hash et password_needs_rehash
acceptent désormais des &string; et &integer; nullable pour l'argument
$algo.
PEAR
L'installation de PEAR (inclus PECL) n'est plus activée par défaut.
Ceci peut être explicitement activé en utilisant
.
Cette option est obsolète et pourra être supprimée dans le futur.
Reflection
Les valeurs numériques des constantes de modificateur
(IS_ABSTRACT,
IS_DEPRECATED,
IS_EXPLICIT_ABSTRACT,
IS_FINAL,
IS_IMPLICIT_ABSTRACT,
IS_PRIVATE,
IS_PROTECTED,
IS_PUBLIC, et
IS_STATIC) sur les classes
ReflectionClass,
ReflectionFunction,
ReflectionMethod,
ReflectionObject, et
ReflectionProperty
ont été modifiées.
SimpleXMLSimpleXMLElement implémente désormais
Countable.
SQLite3
La bibliothèque libsqlite intégrée a été supprimée. Pour compiler l'extension
SQLite3 une libsqlite3 ≥ 3.7.4 du système
est désormais requise. Pour compiler l'extension
PDO_SQLite
une libsqlite3 ≥ 3.5.0 du système est désormais requise.
La linéarisation et délinéarisation de SQLite3,
SQLite3Stmt et SQLite3Result
est désormais explicitement interdite. Auparavant, la linéarisation
d'instances de ces classes était possible, mais la délinéarisation générait
des objets inutilisables.
La notation @param peut désormais être utilisée pour
dénoter les paramètres de requête SQL.
Zip
La bibliothèque libzip intégrée a été supprimée.
Une libzip >= 0.11 du système est désormais requise pour compiler l'extension
zip.