<?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 işlevin sonlanmayacağı belirten bir dönüş türüdür. Yani ya exit() çağrısıyla bir istisna oluşturur ya da sonsuz döngüde kalır. Bu bakımdan union (birleşik) türün parçası olamaz. PHP 8.1.0 ve sonrasında kullanılabilir.
never tür teorisi tabiriyle en alt türdür. Yani diğer her türün alt türü olabilir ve kalıtım sırasında yerini başka bir tür alabilir.
<?php
function sayHello(string $name): never
{
echo "Hello, $name";
exit(); // if we comment this line, php throws fatal error
}
sayHello("John"); // result: "Hello, John"
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');
}
}