Struktura plików systemu
Windu CMS zasadniczo składa się z kilku katalogów głównych a są to:- app - tutaj znajdują się wszystkie pliki systemowe, cały silnik PHP naszego CMSa
- data - ten folder interesuje nas najbardziej, tutaj zapisywane są wszystkie dane użytkownika, jego szablony graficzne oraz widgety.
- cache - tutaj system zapisuje pliki z pamięcią podręczną przyśpieszającą jego działanie
Folder danych data
W katalogu data mamy pod foldery, a ich struktura wgląda następująco:
|
|
Folder aplikacji app
W tym katalogu znajduje się jądro systemu czyli tak zwany "core" oraz zbiór pluginów odpowiadających za poszczedgólne funkcje windu.
|
|
Struktura logiczna
Silnik windu działa zgodnie z poniższą logiką:- index.php - Zapytanie http trafia jest kierowane do folderu z naszym systemem cms gdzie następnie jest kierowane z pomocą pliku .htaccess na plik index.php. W pliku tym następuje ustawienie ścieżek oraz podstawowych zmiennych systemowych po czym wywoływany jest plik configDB.php
- configDB.php - tutaj ładowana jest konfiguracja bazy danych, w tym miescu doklejana jest jedynie kolejna część konfiguracji startowej
- config.php - w tym miescu dołączana jest kolejna partia stałych startowych, w pliku config.php znajdują się parametry podstawowe takie jak zdefiniowana struktura plików i folderów w Windu oraz zdefiniowanie jakie pluginy mają być ładowane
- init.php - jest to kluczowy dla działania systemu plik, w jego wnętrzu znajduje się wywołanie całej logiki, plik ten zawiera cały autoloader ładujący poszczególne klasy Windu ale także wywołuje odpowiedni kontroller na pdostawie routera
- pluginManager::loadMainConfigs() - wywołane wewnątrz init.php ładuje pokolei startowe dane konfiguracyjne z poszczególnych pluginów, na tym etapie mamy kompletnie załadowany config systemu. System jest gotowy do pierwszych operacji.
- router::instance()->callController($request) - wywołanie kontrolera na pdostawie ścieżki. System pobiera tabele routingu i router na jej podstawie wie do jakiego kontrolera ma się odwołać, domyślnie wywoływana jest akcja index, jednak w routingu może być zdefiniowana zmienna #action która mówi nam o tym którą akcje z kontrolera wywołać.