2016-10-10 6 views
6

ich Implementierung eine Iterator-Schnittstelle und wenn ich es skalare implementieren Rückkehr (nach der Referenz http://php.net/manual/en/class.iterator.php), bekam ich diesen Fehler:PHP7: sollte eine skalare Rückgabetyp-Deklaration keine Ganzzahl akzeptieren?

TypeError: Return value of Collection::key() must be an instance of scalar, integer returned

Die Klassenimplementierung:

class Collection implements \Iterator 
{ 
    public function key(): \scalar 
    { 
     return key($this->colecao); 
    } 
    // other methods implementations... 
} 

Nach dem 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).

: reference, integer sollte ein skalarer Wert (http://php.net/manual/en/migration70.new-features.php) betrachtet werden Gibt es einen Fehler in meinem Code, wäre es ein Fehler?

Vielen Dank für eine Erklärung!

+0

'öffentliche Funktionstaste(): int' ist was Sie brauchen. Sie müssen angeben, welcher Skalartyp zurückgegeben wird. –

+0

Rückgabetypen können nur sein http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types Keine Skalar, die ich von – RiggsFolly

+0

gehört habe Die Typen in PHP-Dokumentation gezeigt Es handelt sich nicht um echte Typen, die Sie im Code verwenden können, sie sind nur dazu bestimmt, für menschliche Leser beschreibend zu sein. Z.B. Es gibt keinen Typ namens "gemischt", es bedeutet nur, dass die Funktion mehrere Typen zurückgeben kann. – Barmar

Antwort

5

PHP hat keinen Typ, der als \scalar bekannt ist. PHP unterstützt nur those Typen. Und Ihr \scalar Typ sieht aus wie es eine andere Klasse ist.

Verwandte Themen