// PHP 8.0: интерфейс Stringable
interface Stringable {
public function __toString(): string;
}
// Любой класс с __toString() автоматически реализует Stringable
class Name {
public function __construct(private string $value) {}
public function __toString(): string { return $this->value; }
}
// Type hint
function greet(string|Stringable $name): string {
return "Hello, $name";
}
greet('World'); // OK
greet(new Name('PHP')); // OKStringable реализуется неявно - не нужно писать implements Stringable. Полезен для type hint когда функция принимает строку или объект, приводимый к строке.