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
.