Nette Framework

Na této si stránce si ukážeme, jak použít Lean Mapper v rámci aplikace napsané v Nette.

DI rozšíření

Doporučenou cestou je použití DI rozšíření. Do konfiguračního souboru aplikace (config.neon) si přidáme následující definici:

extensions:
    leanmapper: LeanMapper\Bridges\Nette\DI\LeanMapperExtension

leanmapper:
    db:
        driver: mysqli
        host: localhost
        username: ...
        password: ...
        database: mydatabase

services:
    - Model\BookRepository

Poznámka: rozšíření je dostupné od verze 3.0.

Pokud vám výchozí DI rozšíření nevyhovuje, můžete zkusit doplňky vyvíjené komunitou.

Ruční definice

Pokud nechceme, nebo nemůžeme použít předpřipravené DI rozšíření, můžeme jednotlivé služby definovat ručně. Do konfiguračního souboru aplikace (config.neon) si přídáme následující parametry a definice služeb:

parameters:
    # údaje pro připojení k DB
    db:
        driver: mysqli
        host: localhost
        username: ...
        password: ...
        database: mydatabase

services:
    # registrace Lean Mapperu
    - LeanMapper\Connection(%db%)
    - LeanMapper\DefaultMapper
    - LeanMapper\DefaultEntityFactory

    # registrace repositářů
    - Model\AuthorRepository
    - Model\BookRepository

Repositářům nemusíme ručně předávat závislosti, o to se automaticky postará auto-wiring v Nette.

Předání repositáře do presenteru

Preferovaným způsobem je předání závislostí přes konstruktor.

class BookPresenter extends \Nette\Application\UI\Presenter
{
    /** @var \Model\BookRepository */
    private $bookRepository;

    public function __construct(\Model\BookRepository $bookRepository)
    {
        $this->bookRepository = $bookRepository;
    }
}

Alternativně můžeme použít anotaci @inject.

class BookPresenter extends \Nette\Application\UI\Presenter
{
    /** @var \Model\BookRepository @inject */
    public $bookRepository;

    ...
}

V rámci presenteru pak máme repositář přístupný přes $this->bookRepository.