Интерфейс 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

Содержание

add a note

User Contributed Notes 1 note

up
39
Gormack
2 years ago
Since it's introduced in PHP 8, IPv4Address class Example #1 could be shortened to:
<?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";
}
}
?>
To Top