PHP 5.4 Alpha 1
Před pár dny, po dvou letech od vydání PHP 5.3 , vyšlo PHP 5.4 Alpha 1 Pojďme se společně podívat, co přináší nového.
Jen pro připomenutí v PHP 5.3 to byly tyto tři novinky: - Namespace - Closure - Late Static Bindings
V PHP 5.4 to jsou tyto tři:
- Traits
- array dereferencing
- $this
v closurách
Osobně ale za hodně důležité považuji také: - odstranění Safe mode - odstranění register_globals
Traits
Nebo taky “Trejty”(( :-) )) budou rubysté jistě znát, protože jsou hodně podobné mixinům (rozdíl mezi mixins a traits). Zjednodušeně řečeno traity do PHP přinášejí vícenásobnou dědičnost. Objekty už nemusí mít jenom taťku hermafrodita, ale mohou mít i mamku.
trait Hello
{
public function sayHello()
{
echo 'Hello ';
}
}
trait World
{
public function sayWorld()
{
echo ' World';
}
}
class MyHelloWorld
{
use Hello, World;
public function sayExclamationMark()
{
echo '!';
}
}
$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
// Results eventually in: Hello World!
Více viz: https://wiki.php.net/rfc/horizontalreuse
array dereferencing
Taky vás štvalo psát toto:
$tmp = foo('bar');
$value = $tmp[0];
V PHP 5.4 vás už to štvát nebude, protože funguje toto:
$value = foo('bar')[0];
$this
v “kložurách”
Často bylo v PHP 5.3 kódech k vidění něco takového:
$that = $this;
$func = function($foo) use($that) {
return $that->bar($foo);
};
V PHP 5.4 je i toto vyřešeno:
$func = function($foo) {
return $this->bar($foo);
};
Finální release
Při pohledu na https://wiki.php.net/rfc/releaseprocess zjistíte, že by měla být finální verze hotova někdy letos v létě. Při vydání bylo na webu napsáno že “RC1 - September 20 2011”. Informace ale zmizela a tak hádám, že se finálního PHP 5.4.0 dočkáme 21.12.2012. :-)