Nette\DI\ServiceCreationException po upgradu na 2.2.7
- Blaueminence
- Člen | 31
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.
- Blaueminence
- Člen | 31
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
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
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
Na config to vliv nemá, lomítko se týká jen @var. Proč to nenajde RouterFactory netuším…
- Blaueminence
- Člen | 31
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.