PHP Conference Japan 2024

Интерфейс Stringable

(PHP 8)

Введение

Интерфейс Stringable обозначает класс, который реализует метод __toString(). В отличие от большинства интерфейсов, Stringable неявно присутствует в каждом классе, в котором определили магический метод __toString(), хотя интерфейс разрешается и требуется объявлять явно.

Основное значение интерфейса — разрешить функциям выполнять проверку типа на соответствие объединённым типам string|Stringable, чтобы принимать либо строковый примитив, либо объект, который может преобразовать в строку.

Обзор интерфейса

interface Stringable {
/* Методы */
public __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

Содержание

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top