POZOR! Článek jsem napsal před více jak rokem, a tudíž už nemusí reflektovat můj nynější názor nebo může být zastaralý.
V původním RFC se typ jmenoval „noreturn“, ale po dalším hlasování došlo ke změně na „never“.
Říká funkci nebo metodě, že nedojde k žádnému návratu. Buď tedy vyvolá výjimku nebo ukončí běh.
Rozdíl mezi void a never je, že void funkce/metody nevrací žádnou hodnotu, ale u never ani k žádnému návratu nedojde.
Typickým příkladem může být tato funkce, které vyvolá přesmerování a ukončí běh:
<?php
function redirect(string $uri): noreturn {
header('Location: ' . $uri);
exit();
}
Pokud nedojde k ukončení běhu nebo k vyvolání výjimky, tak (například) tato funkce vyvolá výjimku TypeError:
<?php
function foo(): never {
return;
}
foo(); // Dojde k vyvolání výjimky TypeError
Typ never je pouze návratový typ a nejde použít nikde jinde.
Taková perlička: Jedním z autorů této úpravy PHP je Ondřej Mirtes :)
Znáte někoho, komu by článek mohl pomoct? Zasdílejte mu ho :)