Přeskočit na obsah
Přihlásit

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, central nebo footer.
  • Box je malá komponenta aplikace vybraná řádkem v cms_boxes. Nastavený modul a metoda určují třídu v jmenném prostoru aplikace, například App\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

Diagram jednoho požadavku: vstup, aplikace, brána s cache celé stránky, sestavení každé sekce a boxu, layout a odpověď. Zásah cache přeskočí rovnou na odpověď.

  1. Vstup. public/index.php načte Composer a bootstrap aplikace.
  2. Application. Nejdřív obslouží explicitní trasu aplikace nebo zapnuté API, pak určí jazyk a přiřadí požadavek ke Site.
  3. 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čí.
  4. 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 .tpl nebo zdroj .md.
  5. Layout. Výstupy sekcí se složí v layoutu webu.
  6. 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.

Živě na tomto požadavku

Boxy, které sestavily tuto stránku

Web /docs/architecture/ (id 11) byl nalezen v cms_sites. Tyto řádky cms_boxes k němu patří, načtené stejným dotazem, který používá framework.

SekceBoxTřída a metodaSdílený
central Docs: Architecture docs::page() ne
central Demo: structure demo::structure() ne

Sdílené boxy se zobrazují na každém webu. Sloupec order určuje pořadí uvnitř sekce.