Description

Allows multiple possible types[fn:rc] to be given to a parameter/member.

Syntax

class Example {
    private int|float $foo;
 
    public function __construct(int|float $foo) {
        $this->foo = $foo;
    }
 
    public function doSomethingWithMultipleTypes(float|int $bar): int|float {
        return ($bar + $this->foo) * 2;
    }
}

Inheritance

class A{
    public function foo(string|int $foo): string|int {}
}
 
class B extends A{
    public function foo(string|int|float $foo): string {}
}

Footnotes