Business logika při použití Doctrine 2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ripper
Člen | 56
+
0
-

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
+
0
-

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
+
0
-

Č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
+
0
-

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

Ripper
Člen | 56
+
0
-

Super, děkuji vám všem za odpovědi, pročtu si to a kdybych v tom měl ještě nejasno, tak bych napsal. Ale doufám že se tak nestane :)