Изменения и новшества PHP 5.6.0 RC1

php-logo[1]Вышел первый кандидат в релизы PHP 5.6.0. Можно помочь разработчикам, проверив свои проекты на этой версии (не на боевых серверах, конечно) и сообщив о проблемах.

Изменения радуют. Рассмотрим самое интересное.

Можно использовать простые выражения в константах и значениях по умолчанию:

class PostCache
{
    const EXPIRE_HOUR = 60 * 60;
    const EXPIRE_DAY = self::EXPIRE_HOUR * 24;
 
    public function put($data, $expire = 3 * EXPIRE_HOUR) {
        // ...
    }
}

Аргументы переменной длины:

function queue($name, $delay = null, ...$data)
{
    foreach ($data as $item) {
        Queue::put($name, $item, $delay);
    }
}

Можно на лету распаковать массив в аргументы функции:

function updatePerson($id, $firstName, $lastName)
{
    // ...
}
 
$person = ['Alexander', 'Makarov'];
updatePerson(42, ...$person)

Ввели оператор для возведения в степень:

echo 2 ** 8; // 256
 
$n = 2;
$n **= 8;
echo $n; // 256

При помощи use теперь можно импортировать функции и константы:

namespace My\Space {
    const FOO = 42;
    function f() { echo __FUNCTION__."\n"; }
}
 
// global namespace
namespace {
    use const My\Space\FOO;
    use function My\Space\f;
 
    echo FOO."\n";
    f();
}

Об остальных изменениях можно почитать на соответствующей странице документации, которая ещё будет дописываться.

Оригинал: http://rmcreative.ru/blog/post/php-5.6.0rc1