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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP 7.4.0 est disponible avec de nombreuses améliorations et de nouvelles fonctionnalités


Sujet :

Langage PHP

  1. #1
    Expert éminent sénior
    Avatar de Coriolan
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2016
    Messages : 701
    Points : 51 810
    Points
    51 810
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $data['date'] ??= new DateTime();
    au lieu de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 ?

    Qu’en pensez-vous ?
    Quelles versions de PHP utilisez-vous ?
    Quelles sont les fonctionnalités que vous appréciez le plus ?

    Voir aussi

    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
    PHP 7.3 est disponible en version stable, un aperçu des nouveautés du langage de programmation côté serveur
    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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    Enfin PHP va ressembler à un vrai langage objet... En espérant que ce ne soit pas trop tard, en 2020, vu les améliorations très régulières d'autres langages.

    Petite question : il sera possible de déclarer un type objet comme on le voit dans l'exemple :

    Mais est-ce qu'on pourra déclarer un type comme étant un tableaux d'objets ?
    Par exemple :

    Si j'ai bien compris la liste complète de ce qui sera implémenté est ici :
    https://wiki.php.net/rfc/typed_properties_v2

    Et je ne vois pas d'exemple à ce sujet. A chaque fois c'est un array simple qui est défini.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  3. #3
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par stailer Voir le message
    Petite question : est-ce qu'on pourra déclarer un type comme étant un tableaux d'objets ?
    Par exemple :

    ça avait été proposé dans une RFC en php5.6 (et rejeté) mais elle n'a pas été remise au planning pour le moment => https://wiki.php.net/rfc/arrayof
    il est possible (avec un bricolage) de typer des tableaux d'objet en paramètre d'une fonction mais il n'est pas possible à ma connaissance de typer le retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function dates(\DateTime ...$dates) {    //$dates contient un tableau de \DateTime
      }
    n'oubliez pas de voter si le message vous a aidé


  4. #4
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    C'est pas trop mal...

    - S'il y a d'autres paramètres tu dois obligatoirement les mettre en 1er -> bon, pourquoi pas...
    - Chaque élément du tableau est passé comme un paramètre -> franchement pas terrible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dates($maDate1, $maDate2, $maDate3 )
    On gagne un peu en clarté sur la fonction mais l'utilisation on y perd clairement. Je préfère encore utiliser les commentaires de mon EDI qui me donne l'autocomplétion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /**
     * @param DateTime[] $dates
     * @return DateTime[]
     */
    function dates( $dates) {
     
        return $dates;
    }
     
    $a = new DateTime();
     
    dates([$a, $a, $a]);
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  5. #5
    Membre averti
    Avatar de crozet.magenta
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 208
    Points : 374
    Points
    374
    Par défaut
    oui c'est ce que je dis c'est du bricolage pour contourner une limitation du langage donc ça a des inconvénients et ça ne peut pas convenir pour tous les usages.
    Perso je n'ai jamais utilisé ce genre de code pour les deux raisons que tu as citées : d'une part l'utilisation de la fonction devient plus compliqué et moins intuitif puisqu'on doit passer les éléments un par un (On peut aussi utiliser l'opérateur de décomposition $foo = dates(...$monTableauDeDates) ce qui rend le code plus lisible mais pas plus logique) et l'autre raison c'est que les IDE gèrent très bien les annotations de type Classe[]
    n'oubliez pas de voter si le message vous a aidé


  6. #6
    Membre extrêmement actif
    Femme Profil pro
    None
    Inscrit en
    Août 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : None

    Informations forums :
    Inscription : Août 2012
    Messages : 355
    Points : 716
    Points
    716
    Par défaut
    Beau progrès du point de vue du typage des propriété et de la contravariance. Mais perso j'attends surtout l'implémentation des générics.

  7. #7
    Chroniqueur Actualités

    Homme Profil pro
    Dirigeant
    Inscrit en
    Juin 2016
    Messages
    3 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Dirigeant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3 160
    Points : 66 256
    Points
    66 256
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    Téléchargez PHP 7.4

    Source : PHP

    Et vous ?

    Que pensez-vous des changements apportés dans PHP 7.4 ?
    Quelles versions de PHP utilisez-vous et pourquoi ?
    Quelles nouvelles fonctionnalités souhaiteriez-vous avoir dans les futures versions de PHP ?

    Voir aussi

    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

    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.

    PHP 8 va proposer un compilateur Just In Time qui devrait produire une amélioration des performances en vitesse

    « Pourquoi on est repassé de Go à PHP ? », Danny van Kooten, l'éditeur de MailChimp nous livre les raisons de ce rebasculement
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Et un sacré sucre syntaxique (opérateur d'assignation sur valeur null) :
    Avant PHP 7.4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Euh, c'était pas possible de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $array['key'] = $array['key'] ?? computeDefault();
    avant php7.4 ?

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    si, toutafé, mais t'avoueras que c'est vilain : $a = $a...

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 188
    Points : 818
    Points
    818
    Par défaut
    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 - Visualiser dans une fenêtre à part
    1
    2
    $longVariableName['property name']['key name'] = $longVariableName['property name']['key name'] ?? computeDefault();
    $longVariableName['property name']['key name'] ??= computeDefault();

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    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.

  13. #13
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 173
    Points : 4 685
    Points
    4 685
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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();

  14. #14
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 006
    Points
    2 006
    Billets dans le blog
    1
    Par défaut
    Les propriétés typées, enfin, ça va sacrément simplifier la prise en charge par les IDE.

  15. #15
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    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 !

  17. #17
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut 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.

  18. #18
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 006
    Points
    2 006
    Billets dans le blog
    1
    Par défaut
    Donc pour "l'âme" de PHP c'est de programmer à la yolo ?

  19. #19
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    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.
    Je ne suis pas d'accord avec toi. Le développeur peut toujours coder sans typage fort s'il y tient. Je ne le recommande pas, mais il peut le faire, ce que Java ne permet pas.

    Citation Envoyé par Sodium Voir le message
    Donc pour "l'âme" de PHP c'est de programmer à la yolo ?
    Bonne synthèse, c'est à cause de l'absence de typage fort que ce langage a été fortement critiqué au départ, alors qu'il s'impose sur le web.

    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 !
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  20. #20
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    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.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/06/2013, 20h51
  2. Réponses: 43
    Dernier message: 31/10/2010, 10h50
  3. [PHP-JS] envoyer valeur de page JSP vers page PHP
    Par metatron dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2006, 11h29
  4. [PHP-JS] Passage de paramètre de Javascript vers fonction Php
    Par winnie82 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/07/2006, 10h06
  5. Réponses: 2
    Dernier message: 08/12/2005, 05h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo