DI: Základní rozšíření pro kontejner

Balíček nette/di obsahuje několik rozšíření pro DI kontejner.

ExtensionsExtension

Díky tomuto rozšíření můžeme zaregistrovat další rozšiření pomocí konfiguračních NEON souborů.

extensions:
    dibi: Dibi\Bridges\Nette\DibiExtension22

Tímto způsobem přidáme rozšíření Dibi\Bridges\Nette\DibiExtension22 pod názvem dibi, takže následně ho konfigurujeme pod sekcí dibi:

dibi:
    host: localhost

Objektu rozšíření můžeme předat parametry přes konstruktor.

extensions:
    application: Nette\Bridges\ApplicationDI\ApplicationExtension(%debugMode%, %appDir%, %tempDir%/cache)

InjectExtension

Rozšíření umožňuje používat u služeb příznak inject: true, kterým se aktivuje předávání závislostí přes veřejné proměnné s anotací @inject a metody inject*.

services:
    blog.articles:
        factory: App\Model\Articles
        inject: true
namespace App\Model;

use Nette\Database\Connection;

class Articles
{
    /** @var Connection @inject */
    public $connection;
}

V základním nastavení je inject aktivováno pouze pro presentery.

DecoratorExtension

Dekorátor je rozšíření, pomocí kterého můžeme nastavit tagy nebo doplnit setup (např. volání metod) u všech služeb určité třídy nebo implementující určité rozhraní.

decorator:
    # klíč je název třídy nebo rozhraní
    App\Repository\AbstractRepository:
        setup:
            - setConnection
        inject: true

    App\Component\BaseControl:
        setup:
            - setTranslator(@mytranslator)
        tags: [view]

PhpExtension

Přes toto rozšíření lze nastavovat direktivy PHP. Přehled všech direktiv naleznete na php.net.

php:
    date.timezone: Europe/Prague

ConstantsExtension

Rozšíření umožňuje definovat konstanty v PHP.

constants:
    FOOBAR: 'baz'

Po nastartování aplikace máme k dispozici konstantu FOOBAR.