Wiki
Clone wikishake/shake / quickstart
* Díl 1: Instalace, DB, Struktura aplikace → Díl 2: Scaffolding & Šablony → Díl 3: ORM → Díl 4: Service *
Shake \ Quickstart \ Instalace, DB, Struktura aplikace
Shake staví aplikace na několika-vrstvé architektuře.
Konkrétní příklad: Dejme tomu, že máme blog, a chceme naprogramovat zobrazení článku. Zároveň chceme, aby se každé zobrazení článku ukládalo do logů:
1) V šabloně (template) necháme vykreslit detail článku.
#!html <h1>{$article->title}</h1> Tagy: {foreach $article->tags as $tag} {$tag->name}{sep}, {/sep} {/foreach} {!$article->content_html}
$article
je do šablony předána v presenteru
#!php public function renderDetail($id) { $this->template->article = $this->articleService->get($id); }
#!php public function get($id) { $article = $this->articleRepository->get($id); $this->logRepository->create("User " . $this->user->id . " visited article $id on " . date('j.n.Y G:i:s')); return $article; }
get()
je ve všech repository k dispozici automaticky díky Shake frameworku.
5) Zároveň tato metoda vrací instanci třídy ArticleEntity
(pokud taková třída existuje), která může vypadat třeba takto:
#!php class ObjectEntity extends Shake\Database\Orm\Entity { public function getTags() { $tags = array(); foreach ($this->related('article_2_tag') as $articleTag) { $tags[] = $articleTag->tag; } return $tags; } }
getTags()
, díky které můžeme v šabloně použít {foreach $article->tags as $tag}
.
Updated