Přeskočit obsah
V
Pro vývojáře
Architektura, konvence, jádro systému a bezpečnost
Pro vývojáře / Přehled

Pro vývojáře#

Dokumentace architektury CoolCMS — pro toho, kdo bude systém rozšiřovat.

Kde začít#

Čtete-li tohle poprvé, projděte v tomto pořadí:

  1. Pětivrstvý model — bez něj nedává zbytek smysl.
  2. Struktura projektu — kam co patří.
  3. Konvence kódu — jak má vypadat soubor, který napíšete.
  4. Životní cyklus manageru — kam patří vedlejší efekty.
  5. Identity mapa — landmina, do které narazíte do týdne.

Chci udělat…#

Úkol Kapitola
nový presenter v administraci Admin presenter
nový výpis s filtry a řazením Práce s tabulkami
formulář Formuláře
výběr z tisíců položek místo selectu Picker
komponentu Komponenty
entitu a manager Konvence kódu
přepočet nebo notifikaci po uložení Životní cyklus manageru
nový endpoint API Volání API + RBAC v API
naplánovanou úlohu Cron presentery
e-mail Odesílání e-mailů
novou adresu na frontu Routování
přidat text nebo jazyk Překlady
zrychlit čtení Cache
zapojit obsah do hledání Elasticsearch
upravit vzhled Témata frontenduSCSS
nasadit na starší databázi Kontrola databáze

Sekce#

Sekce Obsah
Úvod vrstvy, struktura, konvence, instalace, nasazení, naplánované úlohy
Core volání API, cache, routování, hooky, hydrátory, identity mapa, atributy sloupců, filtry, e-maily, Elasticsearch
UI admin presenter, DataGrid, Picker, formuláře, komponenty, Latte, cron
Bezpečnost autentizace, RBAC, CORS a rate limit, audit
Vzhled témata, SCSS, design systém
Moduly e-shop, sklad, fakturace, inzerce, katalog firem, blog, diskuze
Překlady NEON i databázová vrstva
Testy a nástroje PHPUnit, PHPStan, pre-commit, skills

Šest věcí, které musíte vědět#

  1. Pětivrstvý model. Presenter → Manager → Service → Mapper → Repository. SQL žije výhradně v repository.
  2. Front nesahá do databáze. Volá Api sekci přes most — proto má tentýž modul dvě sady entit a mezi nimi teče pole, ne objekt.
  3. Hydrátory jsou dva. OrmEntityHydrator na Api straně (stojí na Doctrine), EntityHydrator na Front/Admin straně (jen reflexe a atributy). Nezaměňovat.
  4. Každé Api čtení vyprázdní identity mapu. Rozestavěný objektový graf tím přijde o spojení s databází a nejbližší uložení spadne.
  5. Vedlejší efekty patří do hooků manageru, ne do databázových triggerů — a do after* jen ty vratné.
  6. Uložení objektového grafu je nahrazení, ne doplnění. Co v payloadu chybí, se smaže.

Produkce a vývoj sdílejí jednu databázi

Není žádné „nejdřív na vývojovém“. Každý zápis je ostrý. Experimenty dělejte v transakci s návratem zpět.

Skills jsou závazné, manuál je výklad

Kanonický zápis kódu je ve skills/ — tenhle manuál je z nich udělaný návod s vysvětlením, proč to tak je. Když se rozejdou, platí skill.