PHP5.4 it’s close and it’s time to start playing with the new cool features. I’ve created a new Virtual Machine to play with the new features available within PHP5.4. I wrote a post with the most exciting features (at least for me) when I saw the feature list in the alpha version. Now the Release Candidate is with us, so it’s the time of start playing with them. I also discover really cool features that I pass over in my first review
Let’s start:
Class member access on instantiation.
Cool!
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();
Short array syntax Yeah!
$a = [1, 2, 3];
print_r($a);
Support for Class::{expr}() syntax
foreach ([new Human("Gonzalo"), new Human("Peter")] as $human) {
echo $human->{'hello'}();
}
Indirect method call through array
$f = [new Human("Gonzalo"), 'hello'];
echo $f();
Callable typehint \
function hi(callable $f) {
$f();
}
hi([new Human("Gonzalo"), 'hello']);
Traits
trait FlyMutant {
public function fly() {
return 'I can fly!';
}
}
class Mutant extends Human {
use FlyMutant;
}
$mutant = new Mutant("Storm");
echo $mutant->fly();
Array dereferencing support
function data() {
return ['name' => 'Gonzalo', 'surname' => 'Ayuso'];
}
echo data()['name'];
IDEs don’t support (yet) those features. That’s means IDEs will mark those new features as syntax errors but I hope that they will support them soon. More info here