Правило при отсутствии возврата null
при объявлении типизированных возвращаемых значений заменяет правило о приведении возвращаемых значений к объявленному типу.
Самый важный бит это:
Это соответствует текущему поведению типа параметра. Когда для параметров объявлен тип, значение null не допускается
Если ваша функция или метод ожидает ненулевое значение int в качестве параметра, вы не можете передать нулевое значение и ожидать его принудительного приведения, но вы можете, например, передать строку или логическое значение.
* 1016 Е.Г. *
function foo (int $bar) {
echo "Received: ", $bar, "\n";
}
foo("1");
foo(false);
foo(null);
Первые два будут работать, , но последние не будут .
RFC решил согласовать с этим ожиданием для согласованности.
Ваш выбор очевиден, либо возвращайте обнуляемое целое число:
function foo(): ?int {
return null;
}
Или, если это нежелательно, просто приведите возвращаемое значение перед отправкой обратно:
function foo(): int {
return (int) null;
}