The next iteration of 5.4 looks like it’s more focused on cleaning up the language than features.
It appears many of the previously deprecated functions are now, as promised, removed completely. As this article is about features, here is a quick summary of the other changes:
- Removed: break/continue $var syntax
- Removed: register_globals, allow_call_time_pass_reference, and register_long_arrays ini options
- Removed: session_is_registered(), session_registered(), and session_unregister()
This information is based on alpha/beta releases and is subject to change.
Onwards to the new features…
Traits support
PHP 5.4 includes traits which allow reusable groups of methods to be used from any class.
Here is an example:
{
public function doSomething() {}
public function doSomethingElse() {}
}
We can then use the above trait in an class using the use statement:
{
use someMethods;
public function doSomethingLocaly() {}
}
More information about traits can be found in the manual:
Array dereferencing
As PHP has had object dereferencing for ages, this is something that is really long overdue and addresses the inconsistency between object and array return values.
A quick/common example of the existing object dereferencing:
{
private $_someVar;
private $_someOtherVar;
public function setSomeVar($value)
{
$this->_someVar = $value;
return $this;
}
public function setSomeOtherVar($value)
{
$this->_someOtherVar = $value;
return $this;
}
}
$class = new someClass();
$class->setSomeVar(1)->setSomeOtherVar(2);
Now we can do the same with arrays, without the current need to assign the array return value to a variable before we can access it’s contents:
{
public function getArray()
{
return array(1, 2, 3, 4, 5);
}
}
$class = new someOtherClass();
$third = $class->getArray()[2];
This is a rather pointless example, but demonstrates the new functionality.








