TODO
<?php
/*
examples
*/
Les propriétés d'objet peuvent désormais avoir leur visibilité
set
contrôlée séparément de la visibilité get
.
<?php
class Example
{
// Le premier modificateur de visibilité contrôle la visibilité de lecture,
// et le second modificateur contrôle la visibilité d’écriture.
// La visibilité de lecture ne doit pas être plus restreinte que la visibilité d’écriture.
public protected(set) string $name;
public function __construct(string $name)
{
$this->name = $name;
}
}
Il est désormais possible de créer des objets dont l'initialisation est différée jusqu'à leur accès. Les bibliothèques et frameworks peuvent tirer parti de ces objets paresseux pour différer la récupération de données ou de dépendances nécessaires à l'initialisation.
<?php
class Example
{
public function __construct(private int $data)
{
}
// ...
}
$initializer = static function (Example $fantôme): void {
// Récupérer les données ou dépendances
$data = ...;
// Initialiser
$fantôme->__construct($data);
};
$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost($initializer);
#[\Deprecated]
Le nouvel attribut Deprecated peut être utilisé pour marquer des fonctions, méthodes,
et constantes de classe comme obsolètes. Le comportement de cette fonctionnalité obsolète utilisant cet
attribut correspond à celui du mécanisme de dépréciation déjà existant pour les fonctionnalités fournies
par PHP lui-même. La seule exception est que le code d'erreur émis est
E_USER_DEPRECATED
au lieu de E_DEPRECATED
.
Les dépréciations existantes dans les fonctionnalités fournies par PHP lui-même ont été mises à jour pour utiliser cet attribut, améliorant les messages d'erreur émis en incluant une brève explication.
Ajout de la fonction request_parse_body() qui permet d'interpréter les requêtes RFC1867 (multipart) dans les requêtes HTTP non-POST.
new
sans parenthèsesNouvelles expressions avec des arguments de constructeur sont maintenant déréférençables, ce qui signifie qu'elles permettent de chaîner les appels de méthode, les accès aux propriétés, etc. sans encadrer l'expression entre parenthèses.
Avoir les informations de débogage pour WeakReference affichera maintenant
également l'objet qu'il référence, ou null
si la référence n'est
plus valide.
La sortie de Closure::__debugInfo() inclut maintenant le nom, le fichier et la ligne de la Closure.
Quitter un espace de noms efface désormais les symboles vus. Cela permet d'utiliser un symbole dans un bloc d'espace de noms, même si un bloc d'espace de noms précédent a déclaré un symbole avec le même nom.
curl_version() renvoie une valeur
feature_list
supplémentaire, qui est un tableau associatif
de toutes les fonctionnalités cURL connues, et si elles sont supportées (true
)
ou pas (false
).
Ajout des constantes CURL_HTTP_VERSION_3
et
CURL_HTTP_VERSION_3ONLY
(disponibles
depuis libcurl 7.66 et 7.88) comme options disponibles pour
CURLOPT_HTTP_VERSION
.
Ajout de CURLOPT_PREREQFUNCTION
comme option cURL qui
accepte un callable à appeler après la connexion, mais avant
l'envoi de la requête.
Ce callable doit retourner CURL_PREREQFUNC_OK
ou
CURL_PREREQFUNC_ABORT
pour autoriser ou annuler la requête.
Ajout de CURLOPT_SERVER_RESPONSE_TIMEOUT
,
qui était précédemment connu sous le nom de CURLOPT_FTP_RESPONSE_TIMEOUT
.
Les deux constantes ont la même valeur.
Ajout de CURLOPT_DEBUGFUNCTION
comme option cURL qui
accepte un callable qui est appelé pendant le cycle de vie de la requête
avec l'objet CurlHandle,
un entier contenant le type de message de débogage,
et une chaîne contenant le message de débogage.
Le type de message de débogage est l'un des constantes suivantes:
CURLINFO_TEXT
CURLINFO_HEADER_IN
CURLINFO_HEADER_OUT
CURLINFO_DATA_IN
CURLINFO_DATA_OUT
CURLINFO_SSL_DATA_IN
CURLINFO_SSL_DATA_OUT
CURLINFO_HEADER_OUT
ne doit pas être défini car elle utilise la même fonctionnalité de libcurl.
curl_getinfo() renvoie maintenant une clé
posttransfer_time_us
, contenant le nombre de microsecondes
depuis le début jusqu'à ce que le dernier octet soit envoyé.
Lorsqu'une redirection est suivie, le temps de chaque requête est ajouté ensemble.
Cette valeur peut également être récupérée en passant
CURLINFO_POSTTRANSFER_TIME_T
au paramètre
option
de curl_getinfo().
Cela requiert libcurl 8.10.0 ou ultérieur.
Ajout de l'espace de noms Dom avec de nouvelles classes en contrepartie des classes DOM existantes (par exemple, Dom\Node est le nouveau DOMNode). Ces classes sont compatibles avec HTML 5 et respectent les spécifications WHATWG, résolvant ainsi des bugs de longue date dans l'extension DOM. Les anciennes classes DOM restent disponibles pour assurer la compatibilité ascendante.
Ajout de DOMNode::compareDocumentPosition() avec ses constantes associées:
DOMNode::DOCUMENT_POSITION_DISCONNECTED
DOMNode::DOCUMENT_POSITION_PRECEDING
DOMNode::DOCUMENT_POSITION_FOLLOWING
DOMNode::DOCUMENT_POSITION_CONTAINS
DOMNode::DOCUMENT_POSITION_CONTAINED_BY
DOMNode::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
Il est maintenant possible de passer n'importe quel callable à
DOMXPath::registerPhpFunctions().
De plus, avec DOMXPath::registerPhpFunctionNs(),
des callbacks peuvent désormais être enregistrés pour utiliser la syntaxe d'appel de fonction native
au lieu d'utiliser php:function('nom')
.
Ajout de NumberFormatter::ROUND_HALFODD
pour
compléter la fonctionnalité existante de NumberFormatter::ROUND_HALFEVEN
.
Ajout du support des clés basées sur Curve25519 + Curve448. Spécifiquement, les champs x25519, ed25519, x448 et ed448 sont supportés dans openssl_pkey_new(), openssl_pkey_get_details(), openssl_sign(), et openssl_verify() ont été étendus pour supporter ces clés.
Implementation de PASSWORD_ARGON2 hashage de mot de passe. Requiert OpenSSL 3.2 et une construction NTS.
La version de pcre2lib incluse a été mise à jour en version 10.44. Par conséquent, le support JIT LoongArch a été ajouté, les espaces sont maintenant autorisés entre les accolades dans les éléments compatibles avec Perl, et les assertions de lookbehind de longueur variable sont maintenant supportées.
Avec pcre2lib version 10.44, la longueur maximale des groupes de capture nommés
a changé de 32
à 128
.
Ajout du support pour le modificateur r
(PCRE2_EXTRA_CASELESS_RESTRICT),
ainsi que du modificateur de mode (?r)
.
Lorsqu'il est activé avec le modificateur insensible à la casse (i
),
l'expression verrouille le mélange de caractères ASCII et non-ASCII.
Ajout du support pour les sous-classes spécifiques aux pilotes afin de mieux supporter les fonctionnalités spécifiques à la base de données. Ces nouvelles classes peuvent être instanciées soit en appelant la méthode PDO::connect() ou en instanciant directement une instance des sous-classes spécifique au pilote.
Ajout du support pour les analyseurs SQL spécifiques aux pilotes. Lorsque un parseur spécifique au pilote n'est pas disponible, le parseur par défaut est utilisé. L'analyseur par défaut supporte:
Ajout d'un analyseur personnalisé prenant en charge :
Ajout d'un analyseur personnalisé prenant en charge :
E'string'
)
??
comme séquence d'échappement pour
l'opérateur ?
Ajout d'un analyseur personnalisé prenant en charge :
Ajout du support de l'extension de timestamp Unix pour les archives Zip.
Ajout de la possibilité de changer le chemin de .php_history
via
la variable d'environnement PHP_HISTFILE.
ReflectionAttribute contient désormais une propriété name pour améliorer l'expérience de débogage.
ReflectionClassConstant::__toString() et ReflectionProperty::__toString() renvoie désormais les commentaires de documentation attachés.
De multiples nouvelles méthodes et constantes liées à la fonctionnalité des objets paresseux ont été ajoutées :
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
ReflectionClass::SKIP_DESTRUCTOR
Ajout du support pour la notation clark pour les espaces de noms dans la carte de classes.
Il est désormais possible de spécifier des entrées dans une carte de classes avec la notation clark
pour résoudre un type avec un espace de noms spécifique à une classe spécifique.
Par exemple : '{http://example.com}foo' => 'FooClass'
.
Les intances de DateTimeInterface qui sont
passées à xsd:datetime
ou des éléments similaires sont maintenant
sérialisées en tant que telles au lieu d'être sérialisées en tant que chaîne vide.
La persistence de sessions marche maintenant avec un module de session partagé.
Ajout d'une nouvelle énumération RoundingMode avec un nom plus clair
et une meilleure découvrabilité par rapport aux constantes
PHP_ROUND_*
.
De plus, quatre nouveaux modes d'arrondi ont été ajoutés qui ne sont disponibles que via
la nouvelle énumération RoundingMode.
Il est désormais possible d'utiliser des paramètres qui contiennent à la fois des guillemets simples et doubles.
Il est maintenant possible de passer n'importe quel callable à XSLTProcessor::registerPhpFunctions().
Ajout de XSLTProcessor::$maxTemplateDepth et XSLTProcessor::$maxTemplateVars pour contrôler la profondeur de récursion de l'évaluation du modèle XSL.
Ajout de la constante ZipArchive::ER_TRUNCATED_ZIP
,
qui a été ajoutée dans libzip 1.11.