我正在实现一个迭代器接口,如果我实现它返回标量值(遵循参考 http://php.net/manual/zh/class.iterator.php),那么我会收到以下错误:
TypeError:Collection::key() 的返回值必须是标量类型的实例,而目前返回了整数。
类的实现:
class Collection implements \Iterator
{
public function key(): \scalar
{
return key($this->colecao);
}
// other methods implementations...
}
根据PHP参考文档,整数应被视为标量值(http://php.net/manual/en/migration70.new-features.php):
标量类型声明有两种风格:强制(默认)和严格。现在可以强制或严格地执行以下参数类型:字符串(string),整数(int),浮点数(float)和布尔值(bool)。
我的代码中是否有错误,还是这是一个bug?
感谢您的解释!
public function key(): int
。你必须指定它返回的标量类型。 - Don't Panic