<?php
function sayHello(string $name): never
{
echo "Hello, $name";
exit(); // if we comment this line, php throws fatal error
}
sayHello("John"); // result: "Hello, John"
PHP.mk документација
Никогаш
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
language.types.never.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + преведен приказ
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
language.types.never.php
Никогаш
Референца за `language.types.never.php` со подобрена типографија и навигација.
Никогаш
never е тип само за враќање што укажува дека функцијата не завршува. Ова значи дека или повикува exit(), фрла исклучок или е бесконечна јамка. Затоа, не може да биде дел од унија тип декларација. Достапно од PHP 8.1.0.
never е, во жаргон на теоријата на типови, дното тип. Што значи дека е подтип на секој друг тип и може да го замени секој друг тип на враќање при наследување.
Белешки од корисници 3 белешки
ali1289445 на gmail точка ком ¶
3 години пред
dcfynn на icloud точка ком ¶
пред 1 година
I think the description should be corrected from return-only to non-return function since the context is now misleading
harl на gmail точка ком ¶
пред 23 дена
Never cannot be used in a union type because, being the bottom type, it is already automatically a subtype of every other type. "A|never" is equivalent to "A".
When one type is "obviously" a subtype of another (i.e., it doesn't require loading the class definitions of all the types involved), the former is redundant in union types, and PHP flags the union of both as an error.
Similarly for intersection types, where "A&never" means the same thing as "never". It "obviously" doesn't make sense to mention A there, so PHP won't allow doing so.