Košík je prázdný

Nette Framework je populární a výkonný nástroj pro vývoj aplikací v PHP, který umožňuje rychlý vývoj a dodržování nejlepších praxí. Jednou z klíčových vlastností Nette je jeho systém rozšíření (extensions), který umožňuje vývojářům přidávat nové funkce nebo upravovat stávající bez potřeby zásahu do jádra frameworku. V tomto článku se podíváme na to, jak vytvořit a používat vlastní extension v Nette.

Základy vytváření extension

Než se pustíme do vytváření vlastní extension, je důležité pochopit, jak Nette extension funguje. Extension v Nette je PHP třída, která implementuje rozhraní \Nette\DI\CompilerExtension. Toto rozhraní vyžaduje implementaci metody loadConfiguration(), která umožňuje extension manipulovat s DI kontejnerem, a přidávat služby nebo konfigurační direktivy.

Vytvoření třídy extension Začneme vytvořením nové třídy v našem projektu. Třída by měla být umístěna v adresáři, který je autoloaderem schopen najít. Doporučujeme použít jmenný prostor odpovídající vašemu projektu nebo balíčku.

namespace App\Extensions;

use Nette\DI\CompilerExtension;

class MyCustomExtension extends CompilerExtension
{
    public function loadConfiguration()
    {
        // Konfigurace extension
    }
}

Registrace extension v konfiguračním souboru Po vytvoření třídy je nutné extension zaregistrovat v konfiguračním souboru aplikace. To umožní Nette Frameworku, aby extension načetl a použil při sestavování DI kontejneru.

extensions:
    myCustom: App\Extensions\MyCustomExtension
  1. Konfigurace a použití extension V metodě loadConfiguration() můžete pomocí $this->config přistupovat k předané konfiguraci z NEON souboru a na základě ní dynamicky registrovat služby. Můžete také využít metodu $this->compiler->addConfig() pro přidání dalších konfiguračních direktiv nebo $this->getContainerBuilder() pro přímou manipulaci s kontejnerem.

Pokročilé techniky

Extension může také implementovat metody beforeCompile() a afterCompile(), které umožňují další manipulaci s DI kontejnerem před jeho kompilací, resp. po ní. To je užitečné pro pokročilé integrace, kdy potřebujete upravit služby vytvořené jinými extensions nebo přidávat kompilátorové rozšíření.

 

Vytvoření a použití vlastní extension v Nette Frameworku je silný nástroj pro rozšiřování a přizpůsobování vaší aplikace bez nutnosti zasahovat do jádra frameworku. Postupem uvedeným výše můžete začít s vytvářením vlastních extensions, které zlepší strukturu vašeho projektu a umožní vám sdílet funkcionality mezi různými projekty.