Релиз языка программирования PHP 7.1
Опубликовано 02 Декабрь 2016 06:00:16
Официально представлен релиз языка программирования PHP 7.1. Новая ветка отличающейся значительной порцией новых возможностей и наличием изменений, нарушающих совместимость.
Источник: http://www.opennet.ru/opennews/art.shtml?num=45604
Ключевые улучшения в PHP 7.1:
- Возможность использования типов, которые могут принимать значение null. Для пометки, что параметры функций и возвращаемые значения могут принимать значение null, применяется префикс в виде знака вопроса, например, определив функцию "function f(?callable $p) {}" её можно вызвать с аргументом null - "f(null)";
- Добавлен тип возвращаемого значения void, указывающий на то, что функция не возвращает значения. В подобных функциях допускается использование только пустого return, любые другие значения в return недопустимы (в том числе нельзя указывать "return null"). Значения, возвращаемые функцией с типом void, при попытке их использования в коде будут интерпретироваться как null, без вывода предупреждения;
- Добавлен псевдо-тип iterable, позволяющий определять параметры функций, которые могут принимать значения различных перечисляемых типов, допустимых для перебора в цикле, таких как массивы и объекты Traversable;
- При указании смещения внутри строки теперь можно указывать отрицательные значения, позиция в строке для которых будет рассчитана относительно конца строки. Например, для строки 'abcdef' $str[-2] вернёт "e";
- Добавлен вариант конструкции list(), в которой могут задаваться ключи. Например: "list(1 => $oneBit, 2 => $twoBit, 3 => $threeBit) = $powersOfTwo";
- Добавлено выражение "[] =", которое выступает альтернативой конструкции "list() =". Например, вместо "list($a, $b, $c) = array(1, 2, 3)" теперь можно указать "[$a, $b, $c] = [1, 2, 3]";
- Реализована система вывода ошибок и предупреждений в случае использования в математических выражениях строк, не преобразуемых в число. Например, "10 apples" + "5 pears" приведёт к выводу ошибки "Notice: A non well formed numeric string encountered in example.php on line 3", а 5 * "orange" к "Warning: A non-numeric string encountered in example.php on line 3";
- Возможность обработки нескольких типов исключений в одном выражении catch. В качестве разделителя используется знак "|". Например, "} catch (FirstException | SecondException $e) {";
- Поддержка определения видимости для констант внутри класса. Константы теперь могут определяться с флагами public, private и protected;
- Поддержка асинхронной обработки сигналов в ext/pcntl и поддержка дополнительного контекста в обработчике pcntl_signal;
- В класс Closure добавлен новый статический метод Closure::fromCallable(), позволяющий преобразовать элементы с типом callable в объекты Closure;
- В расширении ext/openssl добавлена поддержка режимов AEAD для блочных шифров, при которых шифруется лишь часть данных, но всё сообщение аутентифицировано;
- В расширении ext/curl для HTTP/2 добавлена поддержка серверных операций PUSH;
- Из изменений, нарушающих совместимость можно отметить запрет на вызов пользовательских функций с меньшим числом аргументов, запрет динамического вызова некоторых видов функций ($func = 'func_num_args';$func();), функция rand() теперь перенаправляется на mt_rand(), а srand() на mt_srand(), изменена семантика параметров в функциях mb_ereg() и mb_eregi(), прекращена поддержка директив session.entropy_file, session.entropy_length, session.hash_function и session.hash_bits_per_character. Генератор псевдослучайных чисел mt_rand() переведён на исходный алгоритм Вихрь Мерсенна (ранее в его реализации была допущена ошибка, не оказывавшая на его свойства существенного влияния).
Источник: http://www.opennet.ru/opennews/art.shtml?num=45604
|
0 | Tweet | Нравится |
|