PHP → Миграция с PHP 7.0.x на PHP 7.1.x

Новые возможности

Обнуляемые типы
Типы для параметров и возвращаемых значений могут быть помечены как обнуляемые, путем добавления префикса в виде знака вопроса. Это означает, что указанные параметры и возвращаемые значения, могут быть как указанного типа, так и NULL.
<?php
function testReturn(): ?string
{
return 'elePHPant';
}
var_dump(testReturn());
function testReturn(): ?string
{
return null;
}
var_dump(testReturn());
function test(?string $name)
{
var_dump($name);
}
test('elePHPant');
test(null);
test();

Результат выполнения данного примера:
string(10) "elePHPant"
NULL
string(10) "elePHPant"
NULL
Uncaught Error: Too few arguments to function test(), 0 passed in...

Ничего не возвращающие функции
Был добавлен тип возвращаемого значения void. Функции с таким заданным типом возвращаемого значения не должны ничего возвращать. То есть либо вообще не содержать ни одного оператора return, либо использовать его без параметра. NULL не является корректным значением для возврата в таких функциях.
<?php
function swap(&$left, &$right): void
{
if ($left === $right) {
return;
}
$tmp = $left;
$left = $right;
$right = $tmp;
}
$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b);

Результат выполнения данного примера:
null
int(2)
int(1)

Попытка использовать возвращаемое значение таких функций приведет к тому, что это значение будет считаться за NULL, без вывода предупреждения. Причина этого в том, что предупреждения будут вызывать общих функций высшего порядка.
Добавил: admin ( 2017-04-30 13:36:53 )
Рейтинг: + 1 -
Просмотров: 2185

Специальные предложения