Architektura
WBengine drží průchod požadavku malý a přehledný. Objekty Application, Site, Section a Box tvoří stejný strom jako aplikační kód.
Strom objektů
- Application je kořen jednoho HTTP požadavku. Načítá konfiguraci a poskytuje sdílené služby, například přístup k databázi, směrování, autentizaci, vykreslování, Markdown a cache. Služby se vytvářejí líně, až když jsou potřeba.
- Site je stránka vybraná pro aktuální URL. Nese řádek webu, jazyk, přístupová pravidla, metadata a kontext navigace.
- Section je pojmenovaná oblast layoutu stránky, například
header,centralnebofooter. - Box je malá komponenta aplikace vybraná řádkem v
cms_boxes. Nastavený modul a metoda určují třídu v jmenném prostoru aplikace, napříkladApp\Box\Central\Docs. - Model obsahuje opakovaně použitelný přístup k datům pro box. Používá databázovou vrstvu frameworku a vázané parametry SQL.
- Renderer a šablona mění data boxu na výstup. Šablony používají renderer frameworku; strom objektů PHP nenahrazují.
Rodičovské odkazy jsou skutečné odkazy na objekty: box se dostane ke své sekci, webu i aplikaci bez dalšího globálního kontejneru. Nové funkce PHP držte ve stávajícím stromu a jmenných prostorech. Do šablon nedávejte přihlašovací údaje ani databázovou logiku.
Jeden požadavek od URL po HTML
- Vstup.
public/index.phpnačte Composer a bootstrap aplikace. - Application. Nejdřív obslouží explicitní trasu aplikace nebo zapnuté API, pak určí jazyk a přiřadí požadavek ke Site.
- Brána. Zkontroluje přístup a zda může odpovědět bezpečná cache celé stránky. Zásah pošle uloženou kopii a zbytek přeskočí.
- Sestavení. Načte aktivní Section pro Site. Každá Section přečte své nakonfigurované Box. Box se vytvoří s rodičovskými objekty, zavolá Model, když potřebuje obsah z databáze, a Renderer zpracuje soubor
.tplnebo zdroj.md. - Layout. Výstupy sekcí se složí v layoutu webu.
- Odpověď. Vrátí se odpověď HTTP a volitelně se uloží bezpečná veřejná kopie stránky.
Přesné brány směrování a cache závisejí na nastavení aplikace. Framework řeší přiřazení, přístup a vykreslování; aplikační třídy určují, co každý box dělá.
Co je v databázi a co v PHP
cms_sites popisuje URL a metadata stránek. cms_sections definuje oblasti layoutu. cms_boxes připojuje modul a metodu k sekci, řídí pořadí a umí označit box jako sdílený. Tabulky článků, menu a překladů drží upravitelný obsah. PHP třídy poskytují chování, modely čtou data a šablony je zobrazují. Existující box lze často připojit k novému webu jen daty; nové chování vyžaduje třídu boxu v aplikaci.
Jak web rozšířit
Pro stránku jen s obsahem použijte existující článek nebo registrovaný box a nastavte řádky webu, sekce a boxu. Pro nové chování přidejte třídu pod App\Box\<Section>, rozšiřte Wbengine\Box\WbengineBoxAbstract a používejte její rodičovské přístupové metody. Opakovaně použitelné dotazy dejte do modelu a vykreslete zdroj .tpl nebo .md. Průvodce Boxy ukazuje kód i mapování na databázi.
Markdown, šablony, jazyky, cache a serverové integrační API v2 jsou popsány ve vlastních průvodcích. Volitelná centrální administrace je samostatná aplikace připojená přes API v2; není součástí stromu požadavku PHP ani balíčku Composeru.