Релиз PHP 5.6.0
28 августа 2014 PHP 13029 просмотров
Сегодня вышел PHP 5.6.0. Ура! Сейчас разработчики работают над PHP 7 и PHPNG, пока мы осваиваем новые возможности новой версии. Пока серверы с моими проектами обновлять не буду, но новые проекты несомненно попробую написать в PHP 5.6.0. Дальше я опишу новые возможности топовой версии PHP.

Типы MIME в CLI-сервере
Типы MIME в PHP могут быть использованы для вывода контента, отличного от text/html. При запуске скрипта PHP вывод по умолчанию будет text/html, но используя дополнительные заголовки можно указать тип вывода.
Поддержка скалярных выражений в константах
Теперь можно будет делать так:
class C {
    const ONE = 1;
    const TWO = ONE * 2;

    public function f($a = self::TWO) {
        return $a;
    }
}
Функции с переменным числом аргументов
Раньше нужно было писать плохо читаемый код, используя func_get_args, теперь это работает следующим образом:
function f(...$params) {
    var_dump($params); // Array, containing arguments
}

f(1);
f(1, 2);
f(1, 2, 3);
Распаковка аргументов
Следом за предыдущим нововведением идет передача аргументов массивом:
$args = ['John', 'Lennon', null, true];
f(...$args);
f('John', 'Lennon', null, true); // It's the same
Экспоненциальный оператор
Оператор в виде двух звездочек для возведения числа в степень.
$a = 2 ** 4; // 16
$a **= 2; // 256
use function и use const
Оператор use был дополнен для возможности импорта констант и функции в классы.
namespace My\Space {
    const FOO = 1;

    function f() {
        return 2;
    }
}

namespace {
    use const Name\Space\FOO;
    use function Name\Space\f;

    echo FOO; // 1
    echo f(); // 2
}
phpdbg встроен по умолчанию
UTF-8
default_charset из php.ini теперь используется как кодировка по умолчанию для htmlentities, htmlspecialchars, html_entity_decode. И значение по умолчанию для этого свойства - UTF-8.
php://input
Теперь может вызываться более одного раза в приложении.
Можно загружать файлы размером больше 2GB
Ограничение я пока определить не смог.
Перегрузка операторов в GMP
Сейчас можно использовать стандартные скалярные выражения вместо вызова функций gmp_…
Магический метод __debugInfo()
Разработчик может добавить этот метод в свой класс, который может возвращать любые данные. Они будут выведены в том случае, когда объект будет передан в функцию var_dump().
Улучшена поддержка ZIP
В библиотеку ZIP было добавлено несколько улучшений, особенно в виде новых методов. Один из них, который особенно выделяется - ZipArchive::setPassword($password), который позволяет легко создавать ZIP-архивы, защищенные паролем.
Заключение
Буду рад обсудить эти нововведения в комментариях, возможно, кто-то уже успел что-то запушить на боевой сервер.