(PHP 8)
Интерфейс Stringable обозначает класс, который реализует метод __toString(). В отличие от большинства интерфейсов, Stringable неявно присутствует в каждом классе, в котором определили магический метод __toString(), хотя интерфейс разрешается и требуется объявлять явно.
    Основное значение интерфейса — разрешить функциям выполнять проверку типа на соответствие объединённым типам
    string|Stringable, чтобы принимать либо строковый примитив,
    либо объект, который можно преобразовать в строку.
   
Пример #1 Пример базовой реализации интерфейса Stringable
В примере применили продвижение параметров конструктора до свойств объекта .
<?php
class IPv4Address implements Stringable
{
    public function __construct(
        private string $oct1,
        private string $oct2,
        private string $oct3,
        private string $oct4,
    ) {}
    public function __toString(): string
    {
        return "$this->oct1.$this->oct2.$this->oct3.$this->oct4";
    }
}
function showStuff(string|Stringable $value)
{
    // При выводе значения с типом Stringable неявно вызывается магический метод __toString
    print $value;
}
$ip = new IPv4Address('123', '234', '42', '9');
showStuff($ip);
?>Вывод приведённого примера будет похож на:
123.234.42.9
