Vlastní parent class DI Containeru v Nette 2.4

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
nanuqcz
Člen | 822
+
0
-

Ahoj,
v Nette 2.3 jsem používal tohle:

# config.neon
parameters:
	container:
		parent: Muj\DI\Container

Toto ale v Nette 2.4 nefunguje (vygenerovaný Container dědí z Nette\DI\Container). Jaká je prosím alternativa pro Nette 2.4?

David Grudl
Nette Core | 8227
+
+2
-

Alternativa je naspat extension, ktera v afterCompile() změní, z čeho třída dědí.

nanuqcz
Člen | 822
+
0
-

To mě nenapadlo, díky :-)

nanuqcz
Člen | 822
+
+2
-

Přikládám hotové řešení, pokud bude někdo v budoucnu potřebovat:

# config.neon
extensions:
	muj.di: MujDIExtension
<?php
class MujDIExtension extends Nette\DI\CompilerExtension
{
	public function afterCompile(Nette\PhpGenerator\ClassType $class)
	{
		$class->setExtends('MujDIContainer');
	}
}

Editoval nanuqcz (29. 6. 2017 13:28)

David Matějka
Moderator | 6445
+
+3
-

tohle presne dela parametr parentClass, ne? https://github.com/…xtension.php#L52

di:
	parentClass: MyContainer
nanuqcz
Člen | 822
+
0
-

@DavidMatějka To je nějaká vývojová verze 3.*, ne? V 2.4, kterou mi stáhl composer, tohle nemám.

Každopádně ale řešení přes Extension se mi hodí víc, protože to potřebuju právě pro jedno moje rozšíření Nette frameworku :-)

EDIT: Tak pardon, fakt to je i v 2.4 a mám to i u sebe stáhnuté :-D (https://github.com/…xtension.php)

Editoval nanuqcz (29. 6. 2017 13:55)