Nouvelles fonctionnalités
Nouveau type object
Un nouveau type, object, a été introduit. Il peut être utilisé pour typer un paramètre (contravariant) ou pour typer le retour (covariant).
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new StdClass());
Chargement des extensions par leur nom
Les extensions partagées ne demanderons plus de saisir leur nom complet (.so pour Unix ou .dll pour Windows). C'est actif pour le fichier php.ini et pour la fonction dl().
Substitution de méthode abstraite
Les méthodes abstraites peuvent maintenant être surchargées quand une classe abstraite étend une autre classe abstraite.
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// overridden - still maintaining contravariance for parameters and covariance for return
abstract function test($s) : int;
}
Sodium est maintenant une extension du noyau
La bibliothèque moderne de cryptographie sodium est maintenant devenue une extension de base dans PHP.
Pour une référence de fonction complète, consultez le chapitre Sodium.
Hachage de mot de passe avec Argon2
Argon2 a été ajouté à l'API pour le hachage de mot de passe, et les constantes suivantes ont été exposées :
-
PASSWORD_ARGON2I
-
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
-
PASSWORD_ARGON2_DEFAULT_TIME_COST
-
PASSWORD_ARGON2_DEFAULT_THREADS
Types de chaîne étendue pour PDO
Type de chaîne de PDO a été étendu pour prendre en charge le type de caractère national lors de l’utilisation des requêtes préparées. Cela a été fait avec l’une des constantes suivantes :
-
PDO::PARAM_STR_NATL
-
PDO::PARAM_STR_CHAR
-
PDO::ATTR_DEFAULT_STR_PARAM
Ces constantes sont utilisées avec l’opérateur de bits OR
et PDO::PARAM_STR
:
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
Ajout d'information de déboggage pour l'émulation des requêtes préparées pour PDO
La méthode PDOStatement::debugDumpParams() a été mis à jour pour inclure le SQL envoyé à la DB, où la requête complète, requête brute (y compris les espaces réservés remplacées par leurs valeurs protégées) sera montrée. Ceci a été ajouté afin de faciliter le débogage de l'émulation des requêtes préparées (et donc il sera disponible lorsque l'émulation des requêtes préparées est activée).
Prise en charge pour les opérations étendues dans LDAP
La prise en charge des EXOP a été ajoutée dans l'extension LDAP. Cela a été fait en exposant les constantes et les fonctions suivantes :
- ldap_parse_exop()
- ldap_exop()
- ldap_exop_passwd()
- ldap_exop_whoami()
-
LDAP_EXOP_START_TLS
-
LDAP_EXOP_MODIFY_PASSWD
-
LDAP_EXOP_REFRESH
-
LDAP_EXOP_WHO_AM_I
-
LDAP_EXOP_TURN
Informations additionnelles des adresses dans l'extension Sockets
L'extension sockets a maintenant la capacité de rechercher les informations sur l'adresse, mais aussi de s'y connecter, de se lier dessus et de l'expliquer. Les quatre fonctions suivantes ont été ajoutées pour cela :
Elargissement du type des arguments
Les types de paramètres de méthodes substituées et des implémentations de l’interface peuvent maintenant être omises. C’est toujours dans le respect de LSP, puisque les types de paramètres sont contravariants.
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // type omis pour $input
}
Permettre une virgule de fin pour les espaces de noms groupés
Une virgule de fin peut maintenant être ajoutée à la syntaxe d’utilisation groupé introduite en PHP 7.0.
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};
Prise en charge sur Windows de proc_nice()
La fonction proc_nice() est maintenant prise en charge sur Windows.
Prise en charge de endian pour pack() et unpack()
Les fonctions pack() et unpack() prennent en charge les nombres décimaux et doubles dans les deux Little et Big endian.
Améliorations de l'extension EXIF
L'extension EXIF a été mise à jour pour prendre en charge une gamme beaucoup plus large de formats. Cela signifie que leurs balises spécifiques au format sont maintenant correctement traduites lors de l'analyse des images avec la fonction exif_read_data(). Les nouveaux formats suivants sont désormais pris en charge :
- Samsung
- DJI
- Panasonic
- Sony
- Pentax
- Minolta
- Sigma/Foveon
- AGFA
- Kyocera
- Ricoh
- Epson
Les fonctions EXIF exif_read_data() et exif_thumbnail() prennent désormais en charge des flux en tant que premier argument.
Nouvelles fonctionnalités dans PCRE
- Le modificateur J pour définir PCRE_DUPNAMES a été ajouté.
SQLite3 permet l'écriture de BLOBs
SQLite3::openBlob() permet maintenant d'ouvrir des champs BLOB en mode écriture; auparavant, seul le mode lecture était pris en charge.
Oracle OCI8 prise en charge du Transparent Application Failover
La prise en charge de la fonction de rappel de Transparent Application Failover (TAF) a été ajouté. TAF permet aux applications PHP oci8 de se reconnecter automatiquement à une base de données préconfigurée lorsqu'une connexion est rompue. Le nouveau support de rappel TAF permet aux applications PHP de surveiller et de contrôler la reconnexion pendant le basculement.
Améliorations de l'extension ZIP
La prise en charge de la lecture et de l'écriture d'archive chiffrée a été ajouté (nécessite libzip 1.2.0).
La classe ZipArchive implémente maintenant l'interface Countable.
Le flux zip:// accepte maintenant l'option de contexte 'password'.
Version en cache
02/02/2025 02:02:48 Cette version de la page est en cache (à la date du 02/02/2025 02:02:48) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-migration72.new-features.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.