1
Было:
use Framework\Module\Foo;
use Framework\Module\Bar;
use Framework\Module\Baz;
Стало:
use Framework\Module\{Foo, Bar, Baz};
2
До PHP 7:
if (isset($foo)) {
$bar = $foo;
} else {
$bar = 'default'; // присваиваем $bar значение 'default' если $foo равен NULL
}
В PHP 7:
$bar = $foo ?? 'default';
3
Типы скалярных параметров и подсказки (hints) по возвращаемым типам
class Calculator
{
//объявляем, что параметры имеют целый тип integer
public function addTwoInts(int $x, int $y): int
{
//явно объявляем, что метод возвращает целое
return $x + $y; }
}
// объявляем, что параметры имеют целый тип integer
public function addTwoInts(int $x, int $y): int {
// явно объявляем, что метод возвращает целое
return $x + $y;
}
}
4
До PHP 7:
class MyLogger {
public function log($msg) {
print_r($msg . "\n");
}
}
$pusher->setLogger( new MyLogger() );
Использование анонимного класса:
$pusher->setLogger(new class {
public function log($msg) {
print_r($msg . "\n");
}
});
5
Функции CSPRNG.
Две новых функции для генерации крипографически безопасной строки и целых. Первая возвращает случайную строку длиной $len:
random_bytes(int $len);
Вторая возвращает число в диапазоне $min… $max.
random_int(int $min, int $max);
6
Обновленные генераторы
function genA() {
yield 2;
yield 3;
yield 4;
}
function genB() {
yield 1;
yield from genA(); // 'genA' вызывается и отрабатывает в этом месте
yield 5; return 'success'; // финальный результат, который мы позже можем проверить }
foreach (
genB() as $val) {
echo "\n $val"; // выдаст значения от 1 до 5
}
$genB()->getReturn(); // вернет 'success' при отсутствии ошибок