Релиз PHP 7
4 декабря 2015
Вышел долгожданный релиз PHP 7. К его разработке подошли очень ответственно — релиз должен был выйти ещё 12 ноября, но вместо этого незапланировано выпустили дополнительный кандидат RC 7 (с исправлением 17 багов) и отвели две недели на тестирование. Затем, 26 ноября, выпустили ещё один кандидат RC 8, исправляющий 11 багов, с неделей на тестирование.
Ниже — неполный список улучшений и нововведений:
-
PHP 7 до двух раз
быстрее PHP 5.6; -
Улучшена
64-битность: - В 64-битных сборках добавлена поддержка строк длиной более 2³¹ байт;
- В PHP x64 для Windows добавлена нативная поддержка
64-разрядных целых чисел и больших файлов;
-
Многие фатальные ошибки теперь вызывают исключения и, соответственно, могут быть обработаны:
try {
call_method(null); // Упс!
} catch (EngineException $e) {
echo "Exception: {$e->getMessage()}\n";
}
Не перехваченные ошибки в PHP 7 будут обработаны так же, как и ранеев PHP 5.x; -
NULL-коалесцирующий оператор (??) — проверяет переменную на существование и возвращает её значение либо значение второго операнда:
// PHP 7+
$username = $_GET['user'] ?? 'nobody';
// Эквивалент ранних версий PHP
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; -
Комбинированный оператор сравнения (<=>) — возвращает -1, 0 или 1, если первый операнд, соответственно, меньше, равен или больше второго операнда:
// PHP 7+
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1 -
Возможность декларирования типов аргументов и значений функций:
function foo(): array {
return [];
}
Кроме того, PHP 7 вводит четыре новых типа: int, float, string, bool; -
Анонимные классы:
var_dump(new class($i) {
public function __construct($i) {
$this->i = $i;
}
});
Синтаксис анонимных классов аналогичен традиционным классам. Анонимные классы удобны, например, когда класс используется только один раз или в случаях, когда нет необходимости в документировании класса; -
Удалены старые SAPI и расширения. Все удалённые элементы ранее
(в PHP 5.x) были помечены как устаревшие (deprecated) и не рекомендовались к использованию.