Přeskočit na hlavní obsah

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ě.

Upozornění

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