PHP 8.1.0 RC 2 available for testing

Nouvelles fonctionnalités

Cœur de PHP

Syntaxe Plus Flexible pour Heredoc et Nowdoc

Le marqueur fermant pour les chaînes doc n'est plus requis d'être suivi par un point virgule ou un retour à la ligne. Additionellement le marqueur fermant peut être indenté, dans ce cas l'indentation sera retirée de toutes les lignes dans la chaîne doc.

La Déstructuration de Tableaux prend en charge les Assignations de Référence

La déstructuration de tableaux supporte désormais les assignements de référence en utilisant la syntaxe [&$a, [$b, &$c]] = $d. Ceci est aussi supporté pour list().

L'Opérateur Instanceof accepte les Littéraux

instanceof accepte désormais les littéraux comme premier opérant, dans ce cas le résultat est toujours false.

Exception CompileError au lieu de quelques Erreurs de Compilation

Une nouvelle exception CompileError a été ajoutée, duquel ParseError inhérite. Un petit nombre d'erreurs de compilation lanceront désormais CompileError au lieu de générer une erreur fatale. Actuellement ceci affecte uniquement les erreurs de compilation qui peuvent être lancées par token_get_all() dans le mode TOKEN_PARSE, mais plus d'erreurs pourront être converties dans le futur.

Les Virgules de Fin sont Autorisées dans les Appels

Les virgules de fin dans les appels de fonctions et méthodes sont désormais autorisées.

Support pour Argon2id

L'argument de configuration --with-password-argon2[=dir] fournit désormais le support pour les hash Argon2i et Argon2id dans les fonctions password_hash(), password_verify(), password_get_info(), et password_needs_rehash(). Les mots de passe peuvent être hachés et vérifiés en utilisant la constante PASSWORD_ARGON2ID. Le support pour Argon2i et Argon2id dans les fonctions password_*() nécessite désormais que PHP soit lié à la bibliothèque de référence libargon2 ≥ 20161029.

Gestionnaire de Processus FastCGI

De nouvelles options ont été ajoutées pour personnaliser les journaux d'événements FPM :

log_limit
Cette option globale peut être utilisée pour définir la limite de journal pour la ligne journalisée, ce qui permet de consigner des messages de plus de 1024 caractères sans retour à la ligne. Il corrige également divers problèmes d'emballage (retour à la ligne).
log_buffering
Cette option globale permet une journalisation expérimentale sans mise en mémoire tampon supplémentaire.
decorate_workers_output
Cette option de pool permet de désactiver la décoration de sortie pour les sorties des workers quand catch_workers_output est activé.

Fonctions BC Math

bcscale() peut désormais être utilisé en tant que récupérateur pour récupérer la précision actuellement en utilisation.

Lightweight Directory Access Protocol

Le support total pour les Contrôles LDAP a été ajouté aux fonctions de requête LDAP et ldap_parse_result() :

Fonctions pour les Chaînes Multi-Octets

Support pour le Mappage Pleine Casse et Pliage de Casse

Le support pour le mappage pleine casse et pliage de casse a été ajouté. Contrairement au mappage basique de casse, le mapping pleine casse peut modifier la longueur de la chaîne. Par exemple :

<?php
mb_strtoupper
("Straße");
// Produit STRAßE en PHP 7.2
// Produit STRASSE en PHP 7.3
?>
Les différents modes de mappage et de pliage de casse sont disponibles à travers mb_convert_case() :
  • MB_CASE_LOWER (utilisé par mb_strtolower())
  • MB_CASE_UPPER (utilisé par mb_strtoupper())
  • MB_CASE_TITLE
  • MB_CASE_FOLD
  • MB_CASE_LOWER_SIMPLE
  • MB_CASE_UPPER_SIMPLE
  • MB_CASE_TITLE_SIMPLE
  • MB_CASE_FOLD_SIMPLE (utilisé par les opérations insensibles à la casse)
Seul un mappage complet des cas, inconditionnel et indépendant de la langue, est effectué.

Les Opérations de Chaînes Insensibles à la Casse utilisent le Pliage de Casse

Les opérations de chaînes insensibles à la casse utilisent désormais le pliage de casse au lieu du mappage de casse lors des comparaisons. Ceci signifie que plus de caractères seront considérés (insensible à la casse) égaux désormais.

MB_CASE_TITLE exécute une Conversion de casse de titre

mb_convert_case() avec MB_CASE_TITLE exécute désormais une conversion de casse de titre basée sur les propriétés dérivées Unicode Cased et CaseIgnorable. En particulier ceci améliore aussi la gestion des guillemets et apostrophes.

Support pour Unicode 11

Les tables de données pour les Chaînes Multi-octets ont été mis à jour pour Unicode 11.

Support pour les Chaînes Longues

Les Fonctions de Chaînes Multi-Octets supportent désormais correctement les chaînes plus grandes que 2Go.

Amélioration des Performances

Les performances de l'extension des Chaînes Multi-Octets ont été améliorées de façon significative à tous les niveaux. Les plus grandes améliorations sont dans les fonctions de conversion de casse.

Support pour les Captures Nommées

Les fonctions mb_ereg_* supportent désormais les captures nommées. Les fonctions de correspondances comme mb_ereg() retourneront désormais les captures nommées en utilisant à la fois leurs numéros de groupe et leurs noms, similaires à PCRE :

<?php
mb_ereg
('(?<word>\w+)''国'$matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
De plus, mb_ereg_replace() supporte désormais les notations \k<> et \k'' pour faire référence aux captures nommées dans la chaîne de remplacement :
<?php
mb_ereg_replace
('\s*(?<word>\w+)\s*'"_\k<word>_\k'word'_"' foo ');
// => "_foo_foo_"
?>
\k<> et \k'' peuvent aussi être utilisés pour les références numériques, qui fonctionnent aussi avec des nombres de groupe supérieur à 9.

Readline

Le support pour les options completion_append_character et completion_suppress_append a été ajouté à readline_info(). Ces options sont seulement disponibles si PHP est lié à libreadline (plutôt que libedit).

add a note add a note

User Contributed Notes 1 note

up
7
yoander dot valdes at yahoo dot com
2 years ago
"Trailing commas in function and method calls are now allowed" means function parameters, example:

<?php

function my1() {
        echo
"xxxxxx\n";
}

function
my2() {
        echo
"yyyyyy\n";
}

my1(),my2(); // PHP Parse error:  syntax error

my1(,); // PHP Parse error:  syntax error

my1(1,); my2(2,); // OK

?>
To Top