Business logika při použití Doctrine 2

- Ripper
- Člen | 56
Dobrý večer,
přečetl jsem pár článků o business logikách, ale mám pár nejasností. Můžu to zkusit prezentovat na konkrétním příkladě.
Mějme tedy nějaký blog, kde budu hlavně spravovat články. Budu mít ArticleController v administraci, přes který budu přidávat, upravovat a odstraňovat články. To znamená, že v Controlleru zaznamenám požadavek na přidání článku, data v ArticleControlleru (nebo ne?) zpracuji do podoby, kterou mi vezme ArticleFascade. V ArticleFascade to uložím, ale pak nechápu na co mám ArticleService.
Nějak jsem se do toho zamotal a potřeboval bych trochu nakopnout, abych se zase zorientoval. Děkuji.

- Tomáš Kolinger
- Člen | 136
Spíš asi takto… V administraci budeš mít ArticlesPresenter, tomu přes formulář předáš data (tj. Presenter ti zpracuje příchozí request). Necháš si injectnout ArticlesService, přes kterou článek vytvoříš/upravíš/smažeš.
ArticlesService zavolá Doctrinu (respektive Doctrine\ORM\Repository tedy DAO a Doctrine\ORM\EntityManager), vytvoříš požadovanej dotaz, předáš data a o zbytek se už postará Doctrina.
Editoval Tomáš Kolinger (23. 4. 2014 22:38)

- Jiří Nápravník
- Člen | 710
Četl jsem stejné čánky a měl jsem v tom stejný guláš. Můžu tě odkázat na můj dřívější dotaz
Obecně doporučuji použít Doctrine jako Kdyby\Doctrine. Ta obohacuje repository o užitečné věci a je to DAO, než repository (které se často zneužívá i jako DAO). DAO znamená, že umožňuje i ukládat, mazat apod. respoitory by mělo správně jen tahat Z databáze.
No a nad tím si postavíš jednu vrstvu, já ji nazývám Facade, někdo to má jako Manager, jiný zase jako service. Tu si injectuješ do presenteru, komponent a tam s nimi pracuješ.
Service v podání těch dvou článků já v podstatě nepoužívám, resp. jen jednou zatím. A to mám třídu, které šoupnu fotky a ona mi je ořeže podle požadovaných potřeb. Ale klidně se to může místo PhotoResizeService jmeno PhotoResizeService, tj v podstatě názvosloví, jak si to uděláš ty.

- Tomáš Votruba
- Moderator | 1114
@Ripper, myslím, že ti nejvíce pomůže názorná ukázka a tento prakticko-teoretický článek od Filipa (Kdyby\Doctrine)