💡 Совет

Релиз PHP 5.6.0

19.11.2019 1 минута чтения

Сегодня вышел 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-архивы, защищенные паролем.

Заключение

Буду рад обсудить эти нововведения в комментариях, возможно, кто-то уже успел что-то запушить на боевой сервер.

Экспертное мнение Алексей

В веб-разработке с 2012 года. Специализируюсь на PHP, JavaScript и архитектуре высоконагруженных проектов. Автор статей по оптимизации, API и базам данных.

Все статьи автора →
Telegram VK Twitter
Читайте также
Senior PHP Developer. Упрощенный T9 алгоритм
Senior PHP Developer. Упрощенный T9 алгоритм
Представьте, что вы сейчас проходите собеседование на должность PHP Senior Developer. Очень вероятно, что вас могут попросить реализовать какой-то упрощенный...