Quelques nouvelles fonctionnalités de PHP5.4
ARCHIVE
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
[sourcecode language=php]
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();
[/sourcecode]
A noter que l'on peut également appeler plusieurs méthodes de cette façon, du genre:
[sourcecode language=php]
$myCar = (new Car)>setSpeed(100)->setColor('blue');
[/sourcecode]
Nouvelle syntaxe de création de tableaux
[sourcecode language=php]
$a = [1, 2, 3];
print_r($a);
[/sourcecode]
Support de la syntaxe Class::{expr}()
[sourcecode language=php]
$method = 'method';
$test = new Test();
$test->method();
$test->$method();
$test->{'method'}();
Test::method();
Test::$method();
Test::{'method'}();
[/sourcecode]
Résultat de cette commande :
[sourcecode language=php]
method
method
method
method
method
method
[/sourcecode]
Pour ma part, je suis particulièrement intéressé par
Test::$method();
:)
Appel indirect de méthodes via les tableaux
[sourcecode language=php]
$f = [new Human("Gonzalo"), 'hello'];
echo $f();
[/sourcecode]
Un nouveau type de variable: "callable"
[sourcecode language=php]
function hi(callable $f) {
$f();
}
hi([new Human("Gonzalo"), 'hello']);
[/sourcecode]
Utilisation de tableaux déréferencés
[sourcecode language=php]
function data() {
return ['name' => 'Gonzalo', 'surname' => 'Ayuso'];
}
echo data()['name'];
[/sourcecode]
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)...
Via