PHP Conference Japan 2024

Stringable 接口

(PHP 8)

简介

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