<?php
function sayHello(string $name): never
{
echo "Hello, $name";
exit(); // if we comment this line, php throws fatal error
}
sayHello("John"); // result: "Hello, John"
never — тип, который разрешается указывать только как возвращаемое значение, которое указывает, что функция прекратит работу без возврата значения. Функция либо вызывает конструкцию языка exit(), либо выбрасывает исключение, либо это бесконечный цикл. Поэтому этот тип нельзя объявлять в объединении типов. Тип доступен с PHP 8.1.0.
На языке теории типов, never — нижний тип. Это означает, что он — подтип остальных типов и заменяет другие возвращаемые типы при наследовании.
<?php
function sayHello(string $name): never
{
echo "Hello, $name";
exit(); // if we comment this line, php throws fatal error
}
sayHello("John"); // result: "Hello, John"
I think the description should be corrected from return-only to non-return function since the context is now misleading