Your SlideShare is downloading. ×
0
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Pět vrstev modelu
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Pět vrstev modelu

15,293

Published on

Útěk od Active Record

Útěk od Active Record

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
15,293
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
12
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. @jantichy @mediocz Jan Tichý Medio Interactive Útěk od Active Record Pět vrstev modelu
  2. Active Record <ul><li>Co tabulka, to jedna třída
  3. Co záznam v tabulce, to jedna instance
  4. Všechny gettery, settery a obslužné metody jsou v jedné třídě </li></ul>$article = new Article(123); $article->setStatus(Article::STATUS_PUBLISHED); $article->setPublished(new DateTime); $article->save();
  5. Vrstvy modelu v Active Record
  6. Problematické body <ul><li>Cachování
  7. Více různých uložišť
  8. Nahrazování jinými třídami
  9. Single responsibility
  10. Testovatelnost
  11. Silná vazba na strukturu databáze
  12. Jeden record je právě jedna tabulka
  13. Rozšiřitelnost, reusability, modularita </li></ul>
  14. Vrstvy modelu
  15. Entita
  16. Entita <ul><li>Přepravka pro data
  17. Gettery, settery
  18. Typové konverze, kontrola validity </li></ul>$article = new Article; $article = ArticleRepository::find(123); $article->setStatus(Article::STATUS_PUBLISHED); $article->setPublished(new DateTime); echo $article->getTitle();
  19. Mapper
  20. Mapper <ul><li>Obsluha konkrétního uložiště
  21. Databáze, memcache, filesystém
  22. Při find() načte data, vytvoří a naplní entitu, vrátí do repository
  23. Při save() dostane od repository entitu a uloží ji do daného uložiště </li></ul>$mapper = new ArticleDbMapper; $article = $mapper->find(123); $mapper->save($article);
  24. Repository
  25. Repository <ul><li>Vrací uživateli instanci entity
  26. Jednotné místo pro obslužné metody
  27. Řídí si ukládání, cachování, práci s mappery
  28. Na pozadí volá jednotlivé mappery </li></ul>$article = ArticleRepository::find(123); ArticleRepository::save($article); ArticleRepository::delete($article); ArticleRepository::move($article, 5);
  29. Repository <ul><li>Můžeme nahradit jednu repository za jinou, aniž bychom zasahovali do entity
  30. Můžeme prohazovat různé mappery
  31. Jedna repository může podmíněně vracet různé typy entit: </li></ul>// vrátí Television (potomek Product) $product = ProductRepository::find(5); // vrátí Notebook (potomek Product) $product = ProductRepository::find(123);
  32. Service
  33. Service <ul><li>Odstiňuje uživatele od sloupců entity
  34. Balí je do ucelené funkčnosti
  35. Omezení funkčnosti pro daného uživatele </li></ul>$post->publish(); <ul><li>Je to jen fasáda nad entitou: </li></ul>$article->setStatus(Article::STATUS_PUBLISHED); $article->setPublished(new DateTime); ArticleRepository::save($article);
  36. Příklad rozvrstvení modelu
  37. @jantichy @mediocz Jan Tichý Medio Interactive Díky za pozornost!

×