Přechod na Nette 3 – final ExtensionsExtension
- vaci
- Člen | 3
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
Místo přidávání configů skrze extension je můžeš přidat v Bootstrapu, přes Configurator->addConfig()
- Marek Bartoš
- Nette Blogger | 1260
Extensions můžeš registrovat i v neonu.
Editoval Marek Bartoš (29. 3. 2022 12:33)
- vaci
- Člen | 3
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);
`