Нет в PHP, но вы можете создать свои собственные типы следующим образом:
class catLocation
{
protected $val;
protected $allowed = ['on', 'under'];
public function __construct(string $val)
{
if(!in_array($val, $this->allowed)) {
throw new InvalidArgumentException('catLocation must be on or under');
}
$this->val = $val;
}
public function __invoke()
{
return $this->val;
}
}
... напечатайте это в определениях ваших функций:
function whereIsCat(catLocation $loc) {
return 'The cat is ' . $loc() . ' the table.';
// Calling your object like a function will call the "magic" __invoke() method
}
... и используйте его так:
$kitty_loc = new catLocation('under');
echo whereIsCat($kitty_loc); // The cat is under the table.