Autor Zpráva
anonym_
Profil *
Ahoj,

mám problém s kódem v Nette, který se mi nedaří rozběhat lokálně. Konkrétně mám chybu

Deprecated

Return type of Apitte\Core\Mapping\Response\AbstractEntity::getIterator(): iterable should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Kód, který ji generuje, je

public function getIterator(): iterable
{
    return new ArrayIterator($this->toArray());
}

Projekt mi běží na Apache 2.4.51 a PHP 8.1.1.

Poradíte, kde je chyba, čím to může být způsobeno? Zkoušel jsem googlit, ale zatím bez úspěchu.

Děkuji.

PS. tím, že s rozběháním toho projektu (normálně fungujícího) na localhostu válčím už poměrně dlouho, jsem ochotný nabídnout i finanční výpomoc, pokud by mi někdo pomohl více (nejsem primárně vývojář, tak s některými věcmi bojuji déle, než by bylo záhodno).
Firibix
Profil
Reakce na anonyma:
Chybu i jak ji vyřešit popisuje chybová hláška — metoda getIterator() musí vracet Traversable, protože to požaduje interface IteratorAggregate, které tvoje třída implementuje. Tvá deklarace metody getIterator() ale uvádí, že vrací iterable. Vzhledem k tomu, že ve skutečnosti vracíš ArrayIterator, a ten implementuje Traversable, stačí upravit signaturu:

public function getIterator(): \Traversable
{
    // ...
anonym_
Profil *
Firibix:
Super, to bylo ono. Já vím, že ta hláška to popisovala, jen jsem nevěděl, jak s ní naložit...

Měl bys chuť mi pomoci ještě s něčím? Ať už se týká rozběhání toho projektu, příp. pak na jeho dalším vývoji, minimálně v rámci placeného poradce/konzultanta? Někdo šikovný by se mi k ruce hodil. Vše samozřejmě placeně (v tržní ceně, nehledám nikoho, kdo bude dělat za charitu, podmínky bychom domluvili). Můžeme si kdyžtak prohodit maily (a pak další kontakty), kdybys měl zájem vědět více?
lionel messi
Profil
anonym:
Někdo šikovný by se mi k ruce hodil.

Ak chceš, môžeš sa ozvať aj mne, v profile mám mail. Pracujem ako PHP programátor.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0