L'équipe en charge du développement de PHP a annoncé la publication de PHP 5.6. D'après l'équipe, cette dernière version apporte de nouvelles fonctionnalités et un certain nombre d'améliorations mais également quelques changements non rétrocompatibles.
Parmi les changements les plus importants, on trouve :
-
Les expressions scalaires constantes
Il est maintenant possible d'utiliser de l'arithmétique basique ainsi que des opérations logiques lors de la déclaration des constantes, de la définition d'arguments de fonction par défaut ou de propriétés de classe :
const ONE = 1;
const TWO = ONE * 2;
class C {
const THREE = TWO + 1;
const ONE_THIRD = ONE / self::THREE;
const SENTENCE = 'The value of THREE is '.self::THREE;
public function f($a = ONE + self::THREE) {
return $a;
}
} -
Une meilleure syntaxe pour les fonctions variadiques
Les fonctions variadiques peuvent maintenant être déclarées avec l'opérateur
...
:public function variadic_function($param, ...$paramsArray) {
// method implementation
}Dans l'exemple ci-dessus,
...$paramsArray
indique à l'interpréteur de placer tous les arguments variadiques dans le tableau$paramsArray
qui peut ensuite être utilisé dans le code de la fonction. Précédemment, les arguments variadiques étaient déclarés comme ceci :$paramsArray = array_slice(func_get_args(), 1);
-
Exponentiation
Le nouvel opérateur
**
permet de calculer un nombre à la puissance d'un autre. -
UTF-8
L'encoding par défaut est maintenant UTF-8.
-
Surcharge de l'opérateur GMP
Les objets GMP supportent maintenant la surcharge d'opérateurs et le casting en types scalaires. Cela permet un code plus expressif lors de l'utilisation de GMP :
$a = gmp_init(42);
$b = gmp_init(17);
// Code pre-5.6 code :
var_dump(gmp_add($a, $b));
var_dump(gmp_add($a, 17));
var_dump(gmp_add(42, $b));
// Nouveau code :
var_dump($a + $b);
var_dump($a + 17);
var_dump(42 + $b); -
Upload de gros fichiers
La limite de 2Go a été retirée, il est donc maintenant possible d'envoyer des fichiers de taille arbitraire.
Pour les utilisateurs mettant à jour depuis PHP 5.5, un guide de migration est disponible et détaille les différences entre 5.5 et 5.6.0 ainsi qu'une démo de bon nombre de nouvelles fonctionnalités.
PHP 5.6.0 introduit également des changements affectant la compatibilité :
- lors de l'utilisation d'un tableau littérale comme propriété de classe, les clés du tableau ne seront pas écrasées
- json_decode() est plus strict concernant la syntaxe JSON
- les gestionnaires de protocoles et de flux vérifient maintenant par défaut les certificats et noms de domaine lors de l'utilisation de SSL/TLS
- les ressources GMP sont maintenant des objets
- les fonctions Mcrypt requièrent maintenant des clés et IVs valides
Une liste complète de tous les changements peut être trouvée dans le ChangeLog.