Nette\DI\ServiceCreationException po upgradu na 2.2.7

Blaueminence
Člen | 31
+
0
-

Zdravím,

upgradoval jsem plně funkční aplikaci z 2.0.x na 2.2.7. Náhle mi Tracy hlásí vytrvale Nette\DI\ServiceCreationException-Class App\RSS used in service ‚rss‘ not found or is not instantiable, a to na všechny služby (i když některou zakomentuji). V configu mám:

services:
	userManager:
		class: App\UserManager
	rss:
		class: App\RSS
	settings:
		class: App\Settings
	pages:
		class: App\Model\Pages
		setup:
			- setCore
	core:
		class: App\Core
		setup:
			- setSession

atd.

Namespacy modelových tříd jsem nastavil správně, ale i když zakomentuji všechny, hlásí mi to nenalezení jiných (např. BasePresenter a podobně). Zdá se, že to najednou namespacy vůbec nebere v potaz. Původní verze fungovala, cache jsem smazal a sandbox 2.2.7 pustím bez problémů.

Díky za pomoc.

David Grudl
founder | 8310
+
0
-

Používáš anotace @inject?

Blaueminence
Člen | 31
+
0
-

Ano, pomocí ní si předávám závislost modelových tříd, například takto:


    /**
     * @var App\Core
     * @inject
     */
    public $core;

Je to správně, nebo to nová verze už řeší jinak?

David Grudl
founder | 8310
+
+1
-

Tady skutečně došlo ke změně, nová verze respektuje klauzule use, to znamená, že třeba tam dej \App\Core s lomítkem na začátku.

Blaueminence
Člen | 31
+
0
-

Zkusil jsem to změnit ve všech třídách, nicméně laděnka stále hlásí chybu např. Class \App\RouterFactory used in service ‚routeFactory‘ not found or is not instantiable. (ať už do configu to dám s lomítkem nebo bez)…

David Grudl
founder | 8310
+
0
-

Na config to vliv nemá, lomítko se týká jen @var. Proč to nenajde RouterFactory netuším…

Blaueminence
Člen | 31
+
0
-

Přesunul jsem všechny zmíněné třídy pod namespace App\Model, jen RouteFactory nechal a funguje to… i když nevím proč :D ale už to nebudu řešit.

RSS tématu Téma zavřeno