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/.