struktura dat, entit, modelů s doctrine

- Pinqui
- Člen | 19
Zdravím, chtěl bych se zeptat, jak řešíte umístění logiky.
Obecně když jsem používal dibi, tak jsem měl vše v modelech. Nyní když používám doctrine a ta má své entity (budiž modely), tak mě zajímá, zda celou logiku strkat do těch entit nebo si vytvořit krom entit ještě modely a logiku mít v nich, či ještě třetí možnost mít ji v presenterech.
Proč se ptám? U entit jsou většinou settery a gettery jen dané entity a například když bych chtěl pracovat s více entitama najednou, nějak je propojovat (dql) tak pak si můžu hodit mincí do které z entit bych to přidal.
Díky za rady

- Vojtěch Dobeš
- Gold Partner | 1316
Dobré je zavřít oči a představit si „nic jako modely neexistuje“. Entita není „dejme tomu model“, je to prostě entita :). Pojem model označuje celou business logiku aplikace, které poskytuje API volané z presenterů (potažmo i z šablon, pokud je to efektivnější, vícelazy apod.).
Cokoliv složitějšího se vždycky vyplatí dát do nové třídy
s dobrým jménem a jasně vymezeným účelem. Aplikace pak není tak
sedrátovaná (jako když bys nacpal příliš mnoho logiky do entit), snazší
k údržbě atd. Takové třídy zase nemá smysl nazývat „modely“ –
spíš spolu s entitami jsou součástí Modelu (toho M z MPV zkratky). Ať
takové třídy klidně dědí jen od Nette\Object… hlavní je,
aby měly na zodpovědnost jen jednu věc (místo toho, aby ta věc byla na
nějaké entitě).
Ještě doporučím článek http://www.zdrojak.cz/…-doctrine-2/.