PHP 7.4.0 est disponible avec de nombreuses améliorations et de nouvelles fonctionnalités
PHP 7.4 devrait être rendu disponible vers la fin de cette année
Voici un aperçu des nouveautés qui pourraient y figurer
PHP est utilisé par 78,9 % des sites de la toile, ce qui en fait l’un des langages de programmation côté serveur les plus utilisés. En décembre 2018, PHP 7.3 a été rendu disponible en version stable, apportant de nouvelles fonctionnalités et améliorations. Un mois plus tard, et des rapports ont déjà commencé à relayer les nouveautés de PHP 7.4, la prochaine itération du langage.
PHP 7.4 devrait probablement être rendu disponible en décembre 2019. Alors voici quelques nouveautés qui pourraient faire leur apparition dans la nouvelle version :
Preloading
PHP a fait de grands progrès en ajoutant de puissantes fonctionnalités au cours des dernières années. Le moteur de PHP (Zend engine 3) a par été largement réécrit pour être beaucoup plus rapide que les versions précédentes. PHP 7.0 a apporté des gains de performance avec un moteur Zend Engine jusqu'à deux fois plus rapide que dans la version 5.6. La version 7.1.0 du langage de développement Web côté serveur a également suivi avec de nouvelles fonctionnalités et encore des gains de performances : jusqu’à 35 % plus rapide pour les charges de travail avec une utilisation intensive du CPU.
Une nouvelle fonctionnalité devrait améliorer davantage la performance de PHP. Si vous utilisez un framework, ses fichiers doivent être chargés et recompilés pour chaque requête. Le Preloading permet au serveur de charger les fichiers PHP sur la mémoire au démarrage, et les rendre disponibles en permanence pour toutes les requêtes ultérieures. Seul bémol, si la source des fichiers préchargés change, il faudra redémarrer le serveur.
Typed properties
Les variables de classe peuvent être indiquées :
Code:
1 2 3 4 5 6
| class A
{
public string $name;
public Foo $foo;
} |
Variation de type améliorée
Il sera possible d’utiliser des types de retour covariants :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class ParentType {}
class ChildType extends ParentType {}
class A
{
public function covariantReturnTypes(): ParentType
{ /*
*/ }
}
class B extends A
{
public function covariantReturnTypes(): ChildType
{ /*
*/ }
} |
et des arguments contravariants :
Code:
1 2 3 4 5 6 7 8 9 10 11
| class A
{
public function contraVariantArguments(ChildType $type)
{ /*
*/ }
}
class B extends A
{
public function contraVariantArguments(ParentType $type)
{ /*
*/ }
} |
Cette proposition est actuellement en phase de vote, mais il apparait qu’elle devrait être approuvée sans soucis.
Foreign Function Interface
Foreign Function Interface (FFI) permet de faire appel à du code C à partir de l’espace utilisateur (userland). Cela veut dire que les extensions PHP peuvent être écrites en PHP. Cependant, il faudra maitriser C pour utiliser correctement cette fonctionnalité.
Null Coalescing Assignment Operator
Peut-être traduit en : Opérateur d'assignation coalescente nulle, il permet de faire ça:
Code:
$data['date'] ??= new DateTime();
au lieu de ça :
Code:
$data['date'] = $data['date'] ?? new DateTime();
Cependant, le créateur de cette RFC n’a pas été en mesure de finir son implémentation. Il reste à savoir si un membre de l’équipe PHP core sera en mesure de la finir.
ext-hash toujours activé
Cette extension est maintenant disponible en permanence dans toutes les installations de PHP.
Password Hashing Registry (Registre de hachage de mots de passe)
Modifications internes de la façon d’utilisation des bibliothèques de hachage, de sorte qu'il devient plus facile pour l'utilisateur de les utiliser.
Source : stitcher
Et vous ?
:fleche: Qu’en pensez-vous ?
:fleche: Quelles versions de PHP utilisez-vous ?
:fleche: Quelles sont les fonctionnalités que vous appréciez le plus ?
Voir aussi
:fleche: W3Tech : plus de 60 % des sites Web tournent sur PHP 5.x, une version qui ne sera plus supportée après le 31 décembre 2018
:fleche: PHP 7.3 est disponible en version stable, un aperçu des nouveautés du langage de programmation côté serveur
:fleche: Les benchmarks réalisés sur la dernière préversion de PHP 7.3 sont prometteurs, et la sortie de la version stable se profile à l'horizon
PHP 7.4.0 est disponible avec de nombreuses améliorations et de nouvelles fonctionnalités
PHP 7.4.0 est disponible avec de nombreuses améliorations et de nouvelles fonctionnalités
telles que les propriétés typées, un séparateur numérique littéral, et autres
Comme annoncé au début de cette année, la version 7.4 de PHP est rendue disponible. Cette version marque la quatrième mise à jour de la série PHP 7. PHP 7.4.0 est livré avec de nombreuses améliorations et de nouvelles fonctionnalités telles que :
Les propriétés typées
Code:
1 2 3 4 5
| <?php
class User {
public int $id;
public string $name;
} |
Les propriétés de classe prennent désormais en charge les déclarations de type. L'exemple ci-dessus imposera que $user->id ne peut se voir attribuer que des valeurs entières et $user->name ne peut se voir attribuer que des valeurs de chaîne.
Arrow functions
Arrow functions qu'on pourrait définir par "les fonctions flèches" fournissent une syntaxe abrégée pour définir les fonctions avec une liaison implicite de portée par valeur.
Code:
1 2 3 4
| <?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40); |
Type de rendement limité Covariance et type d'argument Contravariance
La prise en charge complète des variances n'est disponible que si l'autochargement est utilisé. Dans un seul fichier, seules des références de type non cyclique sont possibles, car toutes les classes doivent être disponibles avant d'être référencées. Le code suivant va maintenant fonctionner :
Code:
1 2 3 4 5 6 7 8 9 10
| <?php
class A {}
class B extends A {}
class Producer {
public function method(): A {}
}
class ChildProducer extends Producer {
public function method(): B {}
} |
Séparateur numérique littéral
Les littéraux numériques peuvent maintenant contenir des tirets de soulignement entre les chiffres.
Code:
1 2 3 4 5
| <?php
6.674_083e-11; // float
299_792_458; // decimal
0xCAFE_F00D; // hexadecimal
0b0101_1111; // binary |
Plusieurs autres fonctionnalités sont apportées dans PHP 7.4 dont les « Weak references » (références faibles) qui permettent au programmeur de conserver une référence à un objet qui n'empêche pas que l'objet soit détruit. La suppression des exceptions de __toString() est maintenant autorisée. Auparavant, cela entraînait une erreur fatale. Les erreurs fatales récupérables existantes dans les conversions de chaînes de caractères ont été converties en exceptions d'erreur.
Opcache Preloading Spécifie un script PHP qui sera compilé et exécuté lors du démarrage du serveur, et qui peut précharger d'autres fichiers, soit grâce à include ou en utilisant la fonction opcache_compile_file(). Toutes les entités (par exemple fonctions et classes) définies dans ces fichiers seront disponibles aux requêtes prêt à l'emploi, jusqu'à ce que le serveur soit éteint.
Certaines fonctionnalités ont été dépréciées dont les opérateurs ternaires imbriqués sans parenthèses explicites. Les opérations ternaires imbriquées doivent dorénavant utiliser des parenthèses pour dicter l'ordre des opérations. Auparavant, lorsqu'elle était utilisée sans parenthèses, l'association de gauche ne se traduisait pas par le comportement attendu dans la plupart des cas.
Code:
1 2 3 4
| <?php
1 ? 2 : 3 ? 4 : 5; // déprécié
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok |
Certaines extensions ont été supprimées du core. Ces extensions ont été transférées à PECL et ne font plus partie de la distribution PHP. Les versions paquet PECL de ces extensions seront créées en fonction de la demande des utilisateurs.
:fleche: Téléchargez PHP 7.4
Source : PHP
Et vous ?
:fleche: Que pensez-vous des changements apportés dans PHP 7.4 ?
:fleche: Quelles versions de PHP utilisez-vous et pourquoi ?
:fleche: Quelles nouvelles fonctionnalités souhaiteriez-vous avoir dans les futures versions de PHP ?
Voir aussi
:fleche: PHP 7.4 devrait être rendu disponible vers la fin de cette année, voici un aperçu des nouveautés qui pourraient y figurer
:fleche: PhpStorm 2019.2 disponible : propriétés typées de PHP 7.4, localisation de doublons, expressions régulières pour PHP, scripts Shell, etc.
:fleche: PHP 8 va proposer un compilateur Just In Time qui devrait produire une amélioration des performances en vitesse
:fleche: « Pourquoi on est repassé de Go à PHP ? », Danny van Kooten, l'éditeur de MailChimp nous livre les raisons de ce rebasculement
il y perd son charme et son âme...
Depuis quelques années PHP est en train de devenir une copie de Java ou de C# et à mon sens il y perd son charme et son âme.