Class ‚Nette\Latte\Engine‘ not found po aktualizaci nette

scientific
Člen | 94
+
0
-

Ahoj všem,

aktualizoval jsem Nette komponenty v composeru, a upravil několik dalších blbinek jako strukturu konfiguračního souboru a tak, aby mi projekt fungoval na PHP 7.2.

Problém je v tom, že když sem se pokusil odeslat jeden formulář, tak na mě skočil nástroj Tracy s chybovým hlášením: Class ‚Nette\Latte\Engine‘ not found search►

Usuzuji, že za to může právě aktualizace, že se ta třída nějak přejmenovala nebo tak něco.

Věděl byste prosím někdo, co s tím?

Děkuji moc za rady a tipy.

Ukázka kodu, kde je to použito:

$latte = new \Nette\Latte\Engine;
1421:            $latte->setTempDirectory(__DIR__."/../../temp/");
1422:
1423:            $latte->addFilter("period", BaseManager::getFilterPeriod());
1424:            $latte->addFilter("money", BaseManager::getFilterMoney());

Editoval scientific (21. 4. 2020 15:30)

Petr Parolek
Člen | 455
+
0
-

Ahoj, nermáme křišťálovou kouli, kde kod voláš. Ale vím, jedno, třída \Nette\Latte… neexistuje, jen \Latte\…

Editoval ppar (21. 4. 2020 15:33)

jiri.pudil
Nette Blogger | 1032
+
0
-

Ahoj, jak moc jsi aktualizoval? Latte je vyčleněné do samostatného namespacu už hoooodně dlouho. Doporučuji upgradovat postupně a řídit se migračními příručkami.

scientific
Člen | 94
+
0
-

@ppar:

Kód se volá ve skriptu z app/models/. Před aktualizací komponent v composer.json to na PHP 5 fungovalo.

Umím číst, vím, že neexistuje, ale co s tím? Přece vývojář nette jen tak nějakou třídu nesmazal, musel ji přejmenovat nebo?

@jiripudil:

No většinu komponent o jednu verzi a co dál failovalo pro rezervaci PHP 7 názvy třídy „Object“, kterou nette dříve používalo ještě nějaké komponenty jako caching, utils ještě jednou ještě o jednu verzi, aby to nefailovalo, dokud z těch komponent ten název třídy Object nebyl přejmenován na LegacyObject.

Ty namuály si přečtu, jestli sem někde něco nezapomněl, díky za ně.

Editoval scientific (21. 4. 2020 16:07)

MajklNajt
Člen | 502
+
+1
-

scientific napsal(a):

@ppar:

Kód se volá ve skriptu z app/models/. Před aktualizací komponent v composer.json to na PHP 5 fungovalo.

Umím číst, vím, že neexistuje, ale co s tím? Přece vývojář nette jen tak nějakou třídu nesmazal, musel ji přejmenovat nebo?

@jiripudil:

No většinu komponent o jednu verzi a co dál failovalo pro rezervaci PHP 7 názvy třídy „Object“, kterou nette dříve používalo ještě nějaké komponenty jako caching, utils ještě jednou ještě o jednu verzi, aby to nefailovalo, dokud z těch komponent ten název třídy Object nebyl přejmenován na LegacyObject.

Ty namuály si přečtu, jestli sem někde něco nezapomněl, díky za ně.

tu to máš čierne na bielom

scientific
Člen | 94
+
0
-

Nahradil jsem tedy toto:
$latte = new \Nette\Latte\Engine;
za toto:
$latte = new Latte\Engine;
stejně to nefungovalo, tak jsem to upravil za toto:
$latte = new \Latte\Engine;

Škoda, že jsem o existenci tohoto migračního manuálu nevěděl dříve.

Pomohlo to, děkuji všem.

Mysteria
Člen | 797
+
0
-

To první by ti fungovalo jenom v globálním namespace, pokud to chceš použít v jakékoliv jiném, tak tam musí být i to \ na začátku.