Dokument Architektura » Historie » Revize 3
Revize 2 (Miroslav Krýsl, 2021-05-26 12:02) → Revize 3/4 (Miroslav Krýsl, 2021-05-26 13:26)
h1. Architektura projektu
h2. Use cases pluginu
!genealogy_usecase.png!
h2. Komponenty pluginu
Cílem tohoto projektu je mimo jiné i refaktor stávajícího kódu a rozdělení aplikace do vrstev.
Obsluha volání je rozdělena do logicky souvisejících částí (prefix GT_Plugin), komplexní logika je implementována unitř více služeb (GT_Services ...) a datovou vrstvu realizují Data Access Objects (GT_DAOs ...).
DAOs a Services jsou jednotlivým částem pluginu přístupné pomocí IoC Containeru.
!genealogy_components.png!
h2. Souborová struktura
Souborová struktura dodržuje standard předepsaný pro plugin WordPress.
Projekt je rozdělený do několika hlavních sekcí:
* admin
** _Front-End pro administrátorskou část pluginu._
* common
** _Sdílená logika projektu pro Front-End._
* includes
** _Sdílená logika projektu pro Back-End._
* public
** _Front-End pro uživatelskou část pluginu._
!Untitled%20Diagram%20%281%29.png!
h2. Jmenná konvence
V celém projektu pluginu je dodržována jmenná konvence nastavená pro plugin WordPress.
h2. Proces zpracování uživatelských požadavků
Níže uvedený diagram zobrazuje průběh zpracování uživatelského požadavku.
!Untitled%20Diagram.png!
h2. Důležité výčetní typy
Je velmi důležité dodržovat používání těchto výčetních typů pro zachování přehlednosti kódu a snadnou udržitelnost.
Výčetní typy poskytují textovou reprezentaci, kterou lze snadno změnit bez nutnosti většího zásahu do kódu pluginu.
Každý tento výčetní typ má svoji podobu ve verzi pro skripty v JS a PhP.
h3. Name Types
@common/js/enums/name_types.js@, @includes/enums/GT_Name_Type.php@
h3. Request Types
@common/js/enums/request_types.js@, @includes/enums/GT_Request_Type.php@
Pro stranu „front-endu“ je zde definován výčet selektorů, které jsou nezbytné či klíčové pro nutnou funkčnost pluginu.
Obsahuje primárně ID selektory důležité pro hlavní funkcionalitu pluginu.
Z důvodu přehlednosti se na místo běžné textové reprezentace používají tyto selektory, aby byla jakákoli změna ze strany šablon (HTML) velmi snadno a nebylo nutné zasahovat přímo do logické části programu.
h3. Selektory
@common/js/enums/selectors.js@