Interface iterable neakceptuje array ani ArrayHash
- MajklNajt
- Člen | 498
Zdravím, začal som sa baviť so strict_types a keď mám v nejakej
(action/render) metóde type-hint iterable
, ktorej potom predávam
array
alebo ArrayHash
, tak dostávam chybu:
Argument $data passed to App\Presenters\SamplePresenter::actionSample() must be iterable, Nette\Utils\ArrayHash given.
resp.
Argument $data passed to App\Presenters\SamplePresenter::actionSample() must be iterable, array given.
Podľa dokumentácie PHP by to ale nemalo robiť problém, keďže
Iterable is a pseudo-type introduced in PHP 7.1. It accepts any array or object implementing the Traversable interface. Both of these types are iterable using foreach and can be used with yield from within a generator.
(zdroj: http://php.net/…iterable.php)
Pracujem s najnovšími balíčkami Nette 2.4 (nette/application 2.4.12), ktoré by malo byť plne kompatibilné s PHP 7.1, v čom by mohol byť problém?
Editoval MajklNajt (5. 10. 2018 10:42)
- Ondřej Kubíček
- Člen | 494
to je divný
v čistém php to funguje, viz. https://3v4l.org/CVXN3, tak že by bug v Nette? si myslím,
že za to může ComponentReflection::convertType
respektive
ComponentReflection::getParameterType
, která asi vrátí
špatně type