Projekt

Obecné

Profil

Dokument Architektura » Historie » Verze 3

Miroslav Krýsl, 2021-05-26 13:26

1 1 Tomáš Květoň
h1. Architektura projektu
2
3 2 Miroslav Krýsl
h2. Use cases pluginu
4
5
!genealogy_usecase.png!
6
7 3 Miroslav Krýsl
h2. Komponenty pluginu
8
9
Cílem tohoto projektu je mimo jiné i refaktor stávajícího kódu a rozdělení aplikace do vrstev.
10
11
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 ...).
12
13
DAOs a Services jsou jednotlivým částem pluginu přístupné pomocí IoC Containeru.
14
15
!genealogy_components.png!
16
17 1 Tomáš Květoň
h2. Souborová struktura
18
19
Souborová struktura dodržuje standard předepsaný pro plugin WordPress.
20
Projekt je rozdělený do několika hlavních sekcí:
21
* admin
22
** _Front-End pro administrátorskou část pluginu._
23
* common
24
** _Sdílená logika projektu pro Front-End._
25
* includes
26
** _Sdílená logika projektu pro Back-End._
27
* public
28
** _Front-End pro uživatelskou část pluginu._
29
30
!Untitled%20Diagram%20%281%29.png!
31
32
h2. Jmenná konvence
33
34
V celém projektu pluginu je dodržována jmenná konvence nastavená pro plugin WordPress.
35
36
h2. Proces zpracování uživatelských požadavků
37
38
Níže uvedený diagram zobrazuje průběh zpracování uživatelského požadavku.
39
40
!Untitled%20Diagram.png!
41
42
h2. Důležité výčetní typy
43
44
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.
45
Výčetní typy poskytují textovou reprezentaci, kterou lze snadno změnit bez nutnosti většího zásahu do kódu pluginu.
46
Každý tento výčetní typ má svoji podobu ve verzi pro skripty v JS a PhP.
47
48
h3. Name Types
49
@common/js/enums/name_types.js@, @includes/enums/GT_Name_Type.php@
50
51
h3. Request Types
52
@common/js/enums/request_types.js@, @includes/enums/GT_Request_Type.php@
53
54
Pro stranu „front-endu“ je zde definován výčet selektorů, které jsou nezbytné či klíčové pro nutnou funkčnost pluginu.
55
Obsahuje primárně ID selektory důležité pro hlavní funkcionalitu pluginu.
56
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.
57
58
h3. Selektory
59
@common/js/enums/selectors.js@