Ako správne nahradiť addDefinition()

KristianSubweb
Člen | 144
+
0
-

Ahojte chcel by som sa opýtať riešim preklopenie projektu s Nette 2.4 na Nette 3.1. Každý modul má u nás v Aplikácii aj registráciu svojich vlastných extension. Aktuálne som sa zasekol na tom ako ju po novom viem zaregistrovať.

Aktuálne je to takto:

$builder->addDefinition($this->prefix('DirService'))
   ->setClass('DefaultModule\Services\DirService',
	$builder->parameters["wwwDir"],
    $builder->parameters["appDir"],
    "@Nette\Http\Request"
]);

Vopred ďakujem za odpoveď :)

Marek Bartoš
Nette Blogger | 1165
+
+1
-

Důležitá část je změna class na factory. Ty další změny jsou drobná vylepšení

$builder->addDefinition($this->prefix('DirService'))
	->setFactory(\DefaultModule\Services\DirService::class, [
		$builder->parameters["wwwDir"],
		$builder->parameters["appDir"],
		$builder->getDefinitionByType(\Nette\Http\Request::class),
	]);
KristianSubweb
Člen | 144
+
0
-

Mabar napsal(a):

Důležitá část je změna class na factory. Ty další změny jsou drobná vylepšení

$builder->addDefinition($this->prefix('DirService'))
	->setFactory(\DefaultModule\Services\DirService::class, [
		$builder->parameters["wwwDir"],
		$builder->parameters["appDir"],
		$builder->getDefinitionByType(\Nette\Http\Request::class),
	]);

Ďakujem moc za odpoveď tak zabralo. Ešte by ma zaujímalo čo je podľa vás také viac prechodnejšie vytvárať a registrovať každý modul cez .neon file alebo ako v mojom prípade ModuleNameExtension.php

Marek Bartoš
Nette Blogger | 1165
+
+1
-

Používám neon ve složce modulu, i v případě composer balíků. Píše se snadněji než extension a není třeba tolik řešit priority (snad jen seřazení configů z balíků podle jejich závislostí). Extension jen pro nějaké komplexnější věci a registruje ji balík sám, ve svém neonu.