Adresářová struktura
Kompletní popis adresářové struktury projektu.
Root projektu
Výchozí adresář projektu, který uvidíte po dokončené instalaci.
projekt/
├── app/ # veškerá PHP logika
│ └── Recipes/ # složka s PHP třídami pro nastavení REST API a Datagridů
├── assets/ # veškeré font-end assety
├── bin/ # obsahuje spustitelný PHP command `bin/console`
├── config/ # konfigurace DI containeru
├── docker/ # konfugurace PHP a Nginx, obsahuje i Dockerem vygenerovanou DB
├── log/ # logy a Tracy blue-screeny
├── migrations/ # veškeré databázové migrace
├── router/ # konfigurace rout a routerů
├── temp/ # složka obsahující cache soubory (DI, Latte, Doctrine, JWT)
├── view/ # layout a šablony webu - Latte soubory
├── www/ # složka se souborem index.php - přístupná z webu
│ └── temp/ # složka se zkompilovanými assety - přístupná z webu
├── .env # hlavní konfigurační soubor projektu
├── .env.example # vzor hlavního konfiguračního souboru
├── .gitignore # přednastavený gitignore pro verzování projektu
├── composer.json # vaše PHP dependecies, nastavení autoloadingu a PHP scriptů
├── composer.lock # lock soubor s konkrétními verzemi PHP dependencies
├── docker-compose.yml # konfigurace Docker images pro lokální vývoj
├── docker-entrypoint.sh # příkazy vykonávané po spuštění containeru
├── Dockerfile # předpis pro sestavení linuxového containeru
├── package.json # vaše NodeJS dependecies a nastavení scriptů
├── project.sh # spustitelný soubor `./project.sh`
├── readme.md # readme vašeho projektu
├── tsconfig.json # obecná nastavení TypeScriptu
├── vite.config.ts # nastavení samotného Vite.js bundleru a jeho pluginů (Vue, React)
└── yarn.lock # lock soubor s konkrétními verzemi NodeJS dependencies
app
Ve složce app budete psát veškerou backendovou logiku celé aplikace. Soubory s koncovkou .php
patří pouze sem.
app/
├── Console/ # veškeré PHP konzolové příkazy
├── Database/
│ ├── Entity/ # složka s definicemi databázových tabulek a sloupců
│ ├── Repository/ # složka s databázovými dotazy a query-buildery
│ └── EntityManager.php # třída zajištující CRUD operace nad databází projektu
├── Http/
│ ├── Controller/ # složka s HTTP controllery
│ └── Request/ # složka s HTTP API requesty (controllery)
└── Recipes/ # složka s PHP třídami pro nastavení REST API a Datagridů
assets
Ve složce assets budete psát veškerou front-endovou logiku celé aplikace, zde patří vše, co potřebujete mít na
font-endu. TypeScript, SCSS, Vue, React, rozšíření admin panelu (Vue) nebo třeba i statické obrázky, svg či pdf.
Po spuštění příkazu yarn build
se tyto zdrojové soubory zkompilují, minifikují a vše se uloží do složky www/temp.
assets/
├── img/ # statické obrázky
├── scss/
│ ├── components/ # složka s scss komponentami
│ └── layout.scss # soubor pro registraci scss komponent
├── app.ts # soubor pro registraci veškerých front-end assetů
└── panel.ts # soubor pro nastavení Megio panelu
bin
V této složce nebudete nejspíše nic přidávat ani měnit. Složka totiž obsahuje jeden spustitelný soubor, který zajištuje
vykonávání konzolových PHP scriptů. Soubor se spouští pomocí příkazu bin/console
.
bin/
└── console # spustitelný PHP soubor
config
Ve složce config můžete registrovat veškeré služby či rozšíření DI containeru. Tato složka musí vždy obsahovat jeden hlavní konfigurační soubor s koncovkou .neon. Ve výchozím stavu se jedná o soubor app.neon.
config/
└── app.neon # hlavní konfigurační soubor DI containeru
docker
Ve složce docker můžete snadno upravit nastavení samotného PHP či Nginx. Dále je zde pod-složka temp. Ta obsahuje databázové soubory, které si načítá samotný Docker. Databáze je tedy plně persistentní a je uložena přímo u projektu.
docker/
├── nginx/ # složka s nastavením Nginx
├── php/ # složka s nastavením PHP
└── temp/ # složka s SQLite či Postgres soubory
log
Složka log slouží jako lokální úložiště logů a Tracy blue-screenů, přičemž log je ukládán po dnech a ve formátu JSON
Logstash. Lokální úložiště lze zaměnit za AWS S3 pomocí ENV LOG_ADAPTER=s3
.
migrations
Ve složce migrations naleznete veškeré databázové migrace - SQL příkazy pro vytváření a změny databáze. Toto SQL je
generováno automaticky na základě samotných databázových entit - po spuštění příkazu bin/console diff
.
router
Ve složce router můžete přidávat vlastní routy, které povedou na HTTP controller či HTTP API request. Ve složce se nachází soubor app.php, který je načítán vždy jako první a importuje ostatní routery. Můžete si tedy zaregistrovat i vlastní router.
router/
├── app.php # soubor pro registraci jednotlivých routerů
├── rest.php # router obsahující routy pro REST API
└── web.php # router obsahující routy pro web
temp
Složka temp slouží jako cash. Její obsah je generován automaticky a po jeho smazání se obsah sám znovu vygeneruje.
temp/
├── di/ # vygenerovaný DI container
├── doctrine/ # vygenerovaná metadata pro Doctrine ORM
├── jwt/ # vygenerované SSL klíče pro JWT
└── latte/ # vygenerované Latte šablony
view
Složka view obsahuje veškeré Latte šablony rozdělené do jednotlivých komponent. Výchozí struktura adresáře view je pro přehlednost rozdělena na controllery a komponenty.
view/
├── component/ # složka pro Latte komponenty (př. navbar.latte)
├── controller/ # složka pro šablony controllerů (př. blog.latte)
└── @layout.latte # výchozí šablona společná pro všechny controller šablony
www
Složka www obsahuje dva soubory. Soubor favicon.ico, který jistě znáte. Druhý soubor index.php je o něco
zajímavější - jedná se o hlavní PHP soubor, jenž zajišťuje spuštění celé aplikace. Dále je zde složka temp
- ta
je popsaná v následujícím odstavci.
www/
├── temp/ # složka se zkompilovanými front-end assety
├── favicon.ico # ikonka webu dostupná v záložkách prohlížeče
└── index.php # soubor zajištující spuštění aplikace při HTTP požadavku
www/temp
Složka www/temp obsahuje zkompilované a minifikované front-endové assety. Po spuštění kompilace pomocí příkazu
yarn build
se zde vygeneruje i soubor manifest.json. Ten obsahuje veškeré informace o kompilovaných souborech. Na
straně PHP pak existuje třída AssetLoader, která zajištuje správné načítání zkompilovaných souborů. V Latte pak
existuje funkce vite()
, jenž zajištuje načítání zkompilovaných souborů přímo v šabloně.
Ve složce www/temp nikdy nic neupravujte! Zdrojové soubory se editují pouze a jen ve složce assets.
www/temp/
├── assets/ # složka se zkompilovanými assety
└── manifest.json # soubor s informacemi o kompilaci