Nette 3.0 a PHP 8.0 – Method ReflectionParameter::isArray() is deprecated

kralik
Člen | 228
+
0
-

Ahoj,
zkouším rozjet Nette 3.0. na PHP 8.0. a úplně se mi nedaří.
Našel jsem info o Nette 3.0 je kompatibilní s PHP 8.0.
https://nette.org/cs/maintenance

Bohužel dostávám tuto deprecated.

Method ReflectionParameter::isArray() is deprecated

V tomto souboru na řádku 525.



File: ...\vendor\nette\di\src\DI\Resolver.php:525

515:                if ($res !== null || $parameter->allowsNull()) {
516:                    return $res;
517:                } elseif (class_exists($type) || interface_exists($type)) {
518:                    throw new ServiceCreationException("Service of type $type needed by $desc not found. Did you register it in configuration file?");
519:                } else {
520:                    throw new ServiceCreationException("Class $type needed by $desc not found. Check type hint and 'use' statements.");
521:                }
522:
523:            } elseif (
524:                $method instanceof \ReflectionMethod
525:                && $parameter->isArray()
526:                && preg_match('#@param[ \t]+([\w\\\\]+)\[\][ \t]+\$' . $parameter->getName() . '#', (string) $method->getDocComment(), $m)
527:                && ($itemType = Reflection::expandClassName($m[1], $method->getDeclaringClass()))
528:                && (class_exists($itemType) || interface_exists($itemType))
529:            ) {


Předem díky za radu

Jan Tvrdík
Nette guru | 2595
+
0
-

Máš starou verzi, je to fixed v nette/di od verze 3.0.5.
https://github.com/…162b83e1f7bc

kralik
Člen | 228
+
0
-

Jan Tvrdík napsal(a):

Máš starou verzi, je to fixed v nette/di od verze 3.0.5.
https://github.com/…162b83e1f7bc

Díky vyzkouším.

Ještě si hraju s Nette 3.1. a PHP 8.1.2.
Mám „nette/database“: „^3.1“

Return type of Nette\Database\ResultSet::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice


File: ...\database\src\Database\ResultSet.php:172

162:
163:
164:        public function rewind(): void
165:        {
166:            if ($this->result === false) {
167:                throw new Nette\InvalidStateException(self::class . ' implements only one way iterator.');
168:            }
169:        }
170:
171:
172:        public function current()
173:        {
174:            return $this->result;
175:        }
176:

Díky

Jan Tvrdík
Nette guru | 2595
+
0
-

To je furt dokola. Máš starou verzi. Je to fixed od nette/database verze 3.1.4.

kralik
Člen | 228
+
0
-

Jan Tvrdík napsal(a):

Máš starou verzi, je to fixed v nette/di od verze 3.0.5.
https://github.com/…162b83e1f7bc

Ještě dosávám tuto chybu.

Method App\Router\RouterFactory::createRouter() is not callable.

common.neon mám

services:
...
	- App\Router\RouterFactory::createRouter
...
kralik
Člen | 228
+
0
-

Jan Tvrdík napsal(a):

To je furt dokola. Máš starou verzi. Je to fixed od nette/database verze 3.1.4.

Dobře, jak mohu zjistit jaké verze přesně potřebuji?

Díky

Lumeriol
Generous Backer | 33
+
0
-

kralik napsal(a):

Jan Tvrdík napsal(a):

To je furt dokola. Máš starou verzi. Je to fixed od nette/database verze 3.1.4.

Dobře, jak mohu zjistit jaké verze přesně potřebuji?

Díky

Ideálně poslední dostupné, přeci jen vývoj jde dopředu a každá verze přináší něco nového, opravuje nebo vylepšuje. Pokud by bylo něco nekompatibilního, můžeš se posléze vrátit k předešlé verzi v rámci, nejlépe pomocí composeru.

Pavel Kravčík
Člen | 1082
+
+1
-

@kralik: Nech to ideálně na composeru, akorát si nastav platform na stejnou verzi PHP jako máš na produkční serveru.