PHP5.4 est sorti :) Au programme, de nouvelles syntaxes, pour du développement toujours plus rapide et agréable.
Accès aux méthodes de classes dès l’instanciation
class Human { function __construct($name) { $this->name = $name; } public function hello() { return "Hi" . $this->name; } } // old style $human = new Human("Gonzalo"); echo $human->hello(); // new cool style echo (new Human("Gonzalo"))->hello();
A noter que l’on peut également appeler plusieurs méthodes de cette façon, du genre:
$myCar = (new Car)>setSpeed(100)->setColor('blue');
Nouvelle syntaxe de création de tableaux
$a = [1, 2, 3]; print_r($a);
Support de la syntaxe Class::{expr}()
$method = 'method'; $test = new Test(); $test->method(); $test->$method(); $test->{'method'}(); Test::method(); Test::$method(); Test::{'method'}();
Résultat de cette commande :
method method method method method method
Pour ma part, je suis particulièrement intéressé par
Test::$method();
:)
Appel indirect de méthodes via les tableaux
$f = [new Human("Gonzalo"), 'hello']; echo $f();
Un nouveau type de variable: « callable »
function hi(callable $f) { $f(); } hi([new Human("Gonzalo"), 'hello']);
Utilisation de tableaux déréferencés
function data() { return ['name' => 'Gonzalo', 'surname' => 'Ayuso']; } echo data()['name'];
Modification de $GLOBALS
Le super-tableau $GLOBALS n’est à présent instancié que si on l’utilise. Ce qui suggère un gain de performance, puisqu’enlevant un tableau assez gros.
Bien sûr ce n’est là qu’un aperçu de toutes les nouveautés de php5.4, et l’utilisation de ces nouvelles syntaxes pose la question des performances (allez, qui pour un benchmark ? :p)…