我實現一個Iterator接口,如果我實現它返回標(以下參考http://php.net/manual/en/class.iterator.php),我得到這個錯誤:PHP7:不應該標量返回類型聲明接受整數?
TypeError: Return value of Collection::key() must be an instance of scalar, integer returned
類的實現:
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):
Scalar type declarations come in two flavours: coercive (default) and strict. The following types for parameters can now be enforced (either coercively or strictly): strings (string), integers (int), floating-point numbers (float), and booleans (bool).
在我的代碼中是否有一些錯誤會導致錯誤?
謝謝你的任何解釋!
'public function key():int'就是你需要的。你必須指定它返回的標量類型。 –
返回類型只能是http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types沒有像我聽說過的標量 – RiggsFolly
PHP文檔中顯示的類型並不是真正可以在代碼中使用的類型,它們只是爲了描述人類的讀者。例如。沒有名爲'mixed'的類型,它只是表示該函數可以返回多個類型。 – Barmar