mam wdrożenie interfejsu Iterator i jeśli zaimplementować to powrót skalarne (po nawiązaniu http://php.net/manual/en/class.iterator.php), mam ten błąd:PHP7: nie powinien przyjmować liczby całkowitej deklaracji typu powrotu skalarnego?
TypeError: Return value of Collection::key() must be an instance of scalar, integer returned
Realizacja klasa:
class Collection implements \Iterator
{
public function key(): \scalar
{
return key($this->colecao);
}
// other methods implementations...
}
Według PZP referencyjny całkowitą należy rozważyć wartością skalarną (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).
Czy jest jakiś błąd w moim kodzie, czy byłby to błąd?
Dziękuję za wszelkie wyjaśnienia!
'publiczny klucz funkcyjny(): int' jest tym, czego potrzebujesz. Musisz określić, który typ skalarny zwróci. –
Typy zwrotów mogą być tylko http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types Nie ma czegoś takiego jak skalar, o którym słyszałem o – RiggsFolly
Typy pokazane w dokumentacji PHP nie są prawdziwymi typami, których można używać w kodzie, mają być po prostu opisowe dla ludzkich czytelników. Na przykład. nie ma typu o nazwie 'mixed', to po prostu oznacza, że funkcja może zwrócić wiele typów. – Barmar