Mais qu'est ce que du sucre syntaxique ?

Il s'agit d'un ajout à la syntaxe d'un langage qui ne lui apporte rien de nouveau fonctionnellement, mais rend le quotidien du développeur plus confortable et lui permet de gagner en productivité.

En clair, il s'agit d'une syntaxe alternative pour une fonctionnalité déjà existante, mais qui est soit plus compacte, soit plus simple à utiliser, soit tout simplement plus efficace.

Dans le cas de PHP 5.4, plusieurs fonctionnalités ont été saupoudrées de sucre, à commencer par la définition de tableau qu'il est maintenant possible de réaliser via une syntaxe similaire à JSON.

Ainsi, là ou il était nécessaire dans les versions précédentes du langage de recourir à array(), PHP 5.4 permet de définir un tableau à l'aide de [ et ] :

<?php
$array = [];
$array = [ 1, 2, 3, 4, 5 ];
$array = [ 'un' => 1, 'deux' => 2, 'trois' => 3, 'quatre' => 4, 'cinq' => 5 ]
?>

La création de tableau n'a pas été la seule à recevoir sa dose de sucre, puisqu'il est maintenant possible d'accéder directement à un élément d'un tableau renvoyé par une fonction, sans avoir à utiliser une variable intermédiaire :

<?php
echo str_split('pour votre santé évitez de manger trop gras trop sucré trop salé')[9];
?>

Dans le même registre, il est également devenu possible d'accéder à un membre d'une instance de classe dès sa création :

<?php

class foo
{
   protected $bar = '';

   public function __construct($bar) {
      $this->bar = $bar;
   }

   public function getBar() {
      return $this->bar;
   }
}

echo (new foo('PHP 5.4 c'est foooooooo !'))->getBar();

?>

Enfin, il est maintenant possible d'appeler une méthode statique de classe à l'aide d'une expression :

<?php

class foo
{
   public static function getBar() {
      return "PHP 5.4 c'est foooooooo !";
   }
}

$method = 'Bar';

echo foo::{'get' . $method}();

?>

Attention cependant, si ce sucre apporte un confort réel, il peut aussi provoquer une grosse indigestion s'il est utilisé à mauvais escient.

En effet, il permet d'obtenir très rapidement un code illisible et donc difficile à maintenir.

<?php

class author
{
   protected $name = null;

   public function write($book) {
      echo $book;
   }

   public static function getBooks() {
      return [ 'PHP 5 avancé', 'Programmez!' ];
   }
}

$method = 'Books';

echo (new author('Frédéric Hardy'))->write(author::{'get' . $method}()[1]);

?>

Dans un autre style, la syntaxe <?= $foo ?>, équivalente à <?php echo $var ?> est maintenant utilisable indépendamment de la valeur de la directive de configuration short_open_tags, ce qui améliore la portabilité du code utilisant cette fonctionnalité.

PHP 5.4 apporte donc quelques modifications syntaxiques bienvenues puisqu'elles permettent d'écrire un code plus concis à fonctionnalités égales.

Cependant, malgré le confort certain qu'elles apportent, le développeur devra faire attention lors de leur mise en œuvre sous peine d'écrire un code impossible à maintenir car difficilement lisible.