Nette\DI\ServiceCreationException po upgradu na 2.2.7

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
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
Nette Core | 8236
+
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
Nette Core | 8236
+
+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
Nette Core | 8236
+
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.