Přechod na Nette 3 – final ExtensionsExtension

vaci
Člen | 3
+
0
-

Měl bych dotaz / prosbu.

Řeším upgrade již opuštěného balíčku od Martina Zlámala https://github.com/…er-extension
na Nette 3.

Jelikož na našich projektech ho máme použitý opravdu masivně, tak bych ho rád zachoval.

Mám ale potíž s tím, že ExtensionsExtension (https://github.com/…xtension.php) je nyní FINAL.

Tzn. není možné jí podědit. A pokud jí nepodědím, tak při kompilaci narazím na kontrolu, že žádná extension nezaregistrovala jinou extension, což tento balíček má dělat.
https://github.com/…Compiler.php#L232

Poradili byste co se s tímto dá dělat?
Je ten final opravdu nutný?
Jak jinak nahradit ExtensionsExtension?

Editoval vaci (29. 3. 2022 10:15)

Marek Bartoš
Nette Blogger | 1260
+
0
-

Místo přidávání configů skrze extension je můžeš přidat v Bootstrapu, přes Configurator->addConfig()

vaci
Člen | 3
+
0
-

Chápu, ale jde o addExtension()…

Marek Bartoš
Nette Blogger | 1260
+
+1
-

Extensions můžeš registrovat i v neonu.

Editoval Marek Bartoš (29. 3. 2022 12:33)

vaci
Člen | 3
+
0
-

Došel jsem k tomu, že nejlepší řešení bude upravit compiler, aby kontrola počítala i s možností custom ExtensionsExtension implementací.

`php
/** @internal */
public function processExtensions(): void
{
$extensionsExtensionName = array_key_exists(‚extensions‘, $this->extensions) ? get_class($this->extensions[‚extensions‘]) : Nette\DI\Extensions\ExtensionsExtension::class;
$first = $this->getExtensions(Extensions\ParametersExtension::class) + $this->getExtensions($extensionsExtensionName);
 `