(PHP 8)
Stringable 接口表示一个类具有 __toString() 方法。与大多数接口不同,Stringable 会隐式存在于任何定义了 magic __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