Never

never est uniquement un type de retour indiquant que la fonction ne se termine pas. Cela signifie qu'elle appelle exit(), lève une exception ou est une boucle infinie. Elle ne peut donc pas faire partie d'une déclaration de type union Disponible à partir de PHP 8.1.0.

never est, dans le langage de la théorie des types, le type vide. Cela signifie qu'il est le sous-type de tous les autres types et qu'il peut remplacer n'importe quel autre type de retour lors de l'héritage.

add a note add a note

User Contributed Notes 2 notes

up
7
ali1289445 at gmail dot com
1 year ago
<?php

function sayHello(string $name): never
{
    echo
"Hello, $name";
    exit();
// if we comment this line, php throws fatal error
}

sayHello("John"); // result: "Hello, John"
up
0
mateusz dot charytoniuk at protonmail dot com
1 year ago
Overriding the return type of native interfaces:

<?php

class ReadonlyArrayAccess implements ArrayAccess
{
    public function
__construct(private readonly $array) {}

    public function
offsetExists(mixed $offset): bool
   
{
        return isset(
$this->array[$offset]);
    }

    public function
offsetGet(mixed $offset): mixed
   
{
        return
$this->array[$offset];
    }

    public function
offsetSet(mixed $offset, mixed $value): never
   
{
        throw new
LogicException('This array is read only');
    }

    public function
offsetUnset(mixed $offset): never
   
{
        throw new
LogicException('This array is read only');
    }
}
To Top