Předávání instance Entity přes Container
- VojtaSim
- Člen | 55
Zdravím,
nedávno jsem začal používat Lean Mapper a s výhodami,
které poskytující entity mi začalo vrtat hlavou jak by se dala předávat
daná Entita do modelů atd.
Entitu vytvářím v BasePresenteru::startup()
a obsahuje data
potřebné jak v presenterech dědicích od BasePresenteru tak
i v některých modelech/Repositářích. Potřebná data =
např. id
zmiňované entity podle kterého vybírám další
seznamy v repositářích.
$neededEntity = $this->someRepository->get($id);
$this->context->addService('neededEntity', $neededEntity);
Teď otázka:
Je dobré v presenterech, ve kterých injectuju model/Repositář (který
potřebuje tu entitu) zavolat vlastní metodu, která mi předá potřebnou
entitu (ať už z ->context->getService('neededEntity')
nebo
z BasePresenter->needeEntity)?
Nebo je lepší mít tu entitu uloženou jen v
BasePresenteru->neededEntity
a při každém volání metody
z modelu/Repositáře předávat požadované data z entity +
další věci?
- Filip Procházka
- Moderator | 4668
Udělej obálku která bude entitu poskytovat, rozhodně neregistruj entitu jako službu.
- Tharos
- Člen | 1030
+1 @Filip
Dále, pokud používáš Lean Mapper, bych si dal záležet, aby se do
takové služby zabalila entita, která má co „nejčistší kontext“.
Jinými slovy taková, která byla vytažena z databáze jako jediná v rámci
daného dotazu. V praxi třeba pomocí
$repository->find($id)
.
Osobně bych nepoužil entitu, ke které jsem se nějakým způsobem
dotraverzoval, načetl ji v rámci nějakého
$repository->findAll()
atp.
- VojtaSim
- Člen | 55
Tharos napsal(a):
Jinými slovy taková, která byla vytažena z databáze jako jediná v rámci daného dotazu.
Entita je single vytvořená pomocí ->createEntity()
Filip Procházka napsal(a):
Udělej obálku která bude entitu poskytovat, rozhodně neregistruj entitu jako službu.
s obálkou není problém, spíš že s
->addService('neededEntity', $neededEntity);
jdu jak
s křížkem po funuse, protože všechny ->injcect()
už
proběhly a musel bych v každém presenteru manuálně předávat entitu do
každého modelu/repositáře, který ji vyžaduje.