Сегодня вышел 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-архивы, защищенные паролем.
Заключение
Буду рад обсудить эти нововведения в комментариях, возможно, кто-то уже успел что-то запушить на боевой сервер.