2016-10-10 49 views
6

我實現一個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).

在我的代碼中是否有一些錯誤會導致錯誤?

謝謝你的任何解釋!

+0

'public function key():int'就是你需要的。你必須指定它返回的標量類型。 –

+0

返回類型只能是http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types沒有像我聽說過的標量 – RiggsFolly

+0

PHP文檔中顯示的類型並不是真正可以在代碼中使用的類型,它們只是爲了描述人類的讀者。例如。沒有名爲'mixed'的類型,它只是表示該函數可以返回多個類型。 – Barmar

回答

5

PHP沒有稱爲\scalar的類型。 PHP僅支持those類型。而\scalar類型看起來像是另一個類。

相關問題