Programmez! #240 est en kiosque

En raison de la situation de redressement judiciaire de Presstalis qui s'est superposée à la crise sanitaire covid-19, la sortie dans les kiosques de  Programmez! #240 a été profondément perturbée.

Mais ça y est, il arrive ! Vous le trouverez chez votre marchand de journaux ce mercredi 27 mai !

Il est malgré tout possible qu'il ait encore quelque jours de retard dans quelques régions.

PHP 7.3 est disponible

Par:
fredericmazue

mar, 11/12/2018 - 17:47

Conformément à la feuille de route, l'équipe de développement de PHP vient d'annoncer a disponibilité de PHP 7.3 en version stable.

Cette mouture est très prometteuse en terme de performances. En outre, quelques nouveautés ne manquent pas d'intérêt. Avec PHP 7.3, l'effacement de fichiers sous Windows a un comportement plus conforme à Posix. Les chaines multi-octets (Multi Bytes String ou MBString) qui sont utilisées pour gérer l'Unicode, comme UTF-8 ou UCS-2 ont été améliorées.

Les syntaxes Heredoc et Nowdoc sont désormais plus flexibles. Pour mémoire la syntaxe Heredoc fournit un moyen d'ajouter une grande quantité de texte sans avoir besoin d'échapper des caractères comme des guillemets par exemple. Nowdoc se comporte de manière très similaires à Heredoc, nowdoc se comporte presque comme un heredoc, à ceci près que  l'identifiant est placé entre guillemets simples  (<<<'EOT') et qu'aucune analyse n'est faite dans un nowdoc.

Jusqu'à PHP 7.2 inclus, un Heredoc devait être écrit comme ceci :

class foo {
    public $bar = <<<EOT
bar
EOT;
}

Ici le marque de fermeture EOT ne doit pas être indenté sous peine de générer une erreur de syntaxe.

Avec PHP 7.3, il est possible d'indenter, comme ceci :

class foo {
    public $bar = <<<EOT
        bar
    EOT;
}

L'indentation du marqueur de fermeture définit la quantité d'espaces ou de tabulations à supprimer de chaque ligne du corps. Le fait de supprimer les tabulations et les espaces permet de mettre en retrait le corps de heredoc / nowdoc au même niveau de code.

Mais attention, le marqueur de fermeture ne doit jamais être indenté plus loin que toute autre ligne du corps. Le code ci-dessous produit une erreur de syntaxe :

class foo {
    public $bar = <<<EOT
    bar
        EOT;
}

PHP 7.3 permet encore de terminer un Heredoc / Nowdoc sur une même ligne

$values = [<<<END
a
b
c
END, 'd e f'];