PHP 5.4 Alpha 1

Patrik Votoček

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. :-)

« »