IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Bill Fassinou

370PARTAGES

18  0 

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de rawsrc
Expert éminent sénior https://www.developpez.com
Le 29/11/2019 à 16:57
Et un sacré sucre syntaxique (opérateur d'assignation sur valeur null) :
Avant PHP 7.4 :
Code : Sélectionner tout
1
2
3
if ( ! isset($array['key'])) { 
    $array['key'] = computeDefault(); 
}
Avec PHP 7.4 : $array['key'] ??= computeDefault();.

La branche 7 de PHP est exactement ce qu'il fallait à ce langage qui pantouflait.
Cette branche a induit une sacrée rigueur dans le code. Cela a permis d'améliorer les perfs et surtout de ramener des développeurs en provenance d'autres langages (à fort typage).
Bref, que du bon
4  0 
Avatar de Zefling
Expert confirmé https://www.developpez.com
Le 01/12/2019 à 10:08
Citation Envoyé par Kulvar  Voir le message
C'est pas vilain, l'opérateur ??= a été plutôt conçu pour un code du type.

Code php : Sélectionner tout
1
2
$longVariableName['property name']['key name'] = $longVariableName['property name']['key name'] ?? computeDefault(); 
$longVariableName['property name']['key name'] ??= computeDefault();

En gros, on est passé par ces 3 étapes. Bha, je préféré de loin la dernière.

Code php : Sélectionner tout
1
2
3
4
  
$longVariableName['property name']['key name'] = isset($longVariableName['property name']['key name']) ? $longVariableName['property name']['key name']  : computeDefault(); 
$longVariableName['property name']['key name'] = $longVariableName['property name']['key name'] ?? computeDefault(); 
$longVariableName['property name']['key name'] ??= computeDefault();
1  0 
Avatar de Celira
Modératrice https://www.developpez.com
Le 02/12/2019 à 10:33
Citation Envoyé par Bill Fassinou Voir le message

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 : Sélectionner tout
1
2
3
4
<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
Plus ou moins l'équivalent des lambdas Java, mais à la mode PHP
1  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 22/06/2020 à 9:37
Citation Envoyé par Alexandre T Voir le message


La version 8 continue dans ce sens avec les types mixed, union type, le type de résultat de fonction (oublié en 7.4) "static" et surtout les constructeurs promouvants. Pour le coup ces constructeurs vont vraiment alléger le code !
Pour le coup les constructeur promouvant je trouve pas ca exceptionnel. C'est certes rapide à écrire mais d'un point de vue lisibilité c'est l'enfer surtout quand on mixe les 2 type d'attributs.
De plus il devient difficile de commenter correctement ses attributs de classes quand on utilise ce genre de constructeur.
Je les utilise en Typescript et je commence à revenir en arrière petit à petit.
1  0 
Avatar de SofEvans
Membre chevronné https://www.developpez.com
Le 29/11/2019 à 17:59
Euh, c'était pas possible de faire

Code : Sélectionner tout
$array['key'] = $array['key'] ?? computeDefault();
avant php7.4 ?
0  0 
Avatar de rawsrc
Expert éminent sénior https://www.developpez.com
Le 29/11/2019 à 18:04
si, toutafé, mais t'avoueras que c'est vilain : $a = $a...
0  0 
Avatar de Kulvar
Membre confirmé https://www.developpez.com
Le 30/11/2019 à 20:50
Citation Envoyé par rawsrc  Voir le message
si, toutafé, mais t'avoueras que c'est vilain : $a = $a...

C'est pas vilain, l'opérateur ??= a été plutôt conçu pour un code du type.

Code php : Sélectionner tout
1
2
$longVariableName['property name']['key name'] = $longVariableName['property name']['key name'] ?? computeDefault(); 
$longVariableName['property name']['key name'] ??= computeDefault();
0  0 
Avatar de rawsrc
Expert éminent sénior https://www.developpez.com
Le 30/11/2019 à 21:43
donc sans ce nouvel opérateur, l'écriture à l'ancienne était particulièrement vilaine : je dois t'avouer que commencer une expression comme ça $longVariableName['property name']['key name'] = $longVariableName['property name']['key name'], ça me picore le cerveau.

Avec la nouvelle notation : si la variable est définie et sa valeur différente de null, on la laisse tranquille sinon on l'a créée et on lui affecte une valeur par défaut. Personnellement la nouvelle syntaxe n'enlève rien à la lisibilité et rien à la compréhension, tout en étant moins verbeuse.
0  0 
Avatar de Sodium
Membre extrêmement actif https://www.developpez.com
Le 02/12/2019 à 7:24
Les propriétés typées, enfin, ça va sacrément simplifier la prise en charge par les IDE.
0  0 
Avatar de rawsrc
Expert éminent sénior https://www.developpez.com
Le 02/12/2019 à 14:46
Les fonctions abrégées : le pied !!!
Ensuite le fait que l'équipe ait enfin réglé les problèmes de covariance et contravariance, c'est un très gros plus pour la POO. J'ai déjà eu à contourner les plantages du moteur dans un design objet à cause de cette limitation. Enfin !
0  0