PHP7:标量返回类型声明不应该接受整数吗?
Posted
技术标签:
【中文标题】PHP7:标量返回类型声明不应该接受整数吗?【英文标题】:PHP7: shouldn't a scalar return type declaration accept integer? 【发布时间】:2017-02-19 08:22:38 【问题描述】:我正在实现一个迭代器接口,如果我实现它返回标量(遵循参考 http://php.net/manual/en/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)。
我的代码中是否有错误,你会是一个错误吗?
感谢您的解释!
【问题讨论】:
public function key(): int
是您所需要的。您必须指定它返回的标量类型。
返回类型只能是php.net/manual/en/… 没有听说过的标量这种东西
PHP 文档中显示的类型并不是您可以在代码中使用的真实类型,它们只是用于对人类读者进行描述。例如。没有名为mixed
的类型,只是表示该函数可以返回多种类型。
@Don'tPanic,感谢您的帮助。我已经将返回类型与 int 放在一起,但没有成功。
【参考方案1】:
PHP 没有称为\scalar
的类型。 PHP 只支持those 类型。你的\scalar
类型看起来像是另一个类。
【讨论】:
以上是关于PHP7:标量返回类型声明不应该接受整数吗?的主要内容,如果未能解决你的问题,请参考以下文章