2.5 KiB
2.5 KiB
Krok 02 - Core Data Services (Úložisko)
Kontext projektu
WebWizard ukladá všetky dáta (používatelia, projekty, súhlasy) do JSON súborov v priečinku data/. Je potrebné mať jednotnú službu, ktorá bude tieto operácie bezpečne vykonávať.
Pred implementáciou si preštuduj
docs/architecture.md- Sekcia 4 (Adresárová štruktúra) a 5 (Dátové súbory).docs/prompts/step01.md- Predpokladá sa vytvorená štruktúra.
Cieľ
Implementovať triedu FileStorage v PHP, ktorá bude slúžiť ako hlavné rozhranie pre prácu s JSON súbormi v rámci systému.
Požadované zmeny
- Vytvorenie triedy
App\Services\FileStoragevsrc/Services/FileStorage.php. - Implementácia metód pre:
put(string $path, array $data): bool- Uloží pole ako JSON.get(string $path): ?array- Načíta JSON a vráti pole.exists(string $path): bool- Overí existenciu súboru.delete(string $path): bool- Vymaže súbor.
- Pridanie ochrany proti "path traversal" (napr. použitie
realpathalebo sanitizácia cesty, aby sa operácie obmedzili na priečinokdata/).
Implementačné pravidlá
- Používaj
json_encodesJSON_PRETTY_PRINTpre lepšiu čitateľnosť súborov. - Zabezpeč ošetrenie chýb pri čítaní/zápise (napr. neexistujúci súbor, neplatný JSON).
- Trieda musí byť v namespace
App\Services.
Súbory ktoré je potrebné vytvoriť
src/Services/FileStorage.php
Súbory ktoré je potrebné upraviť
Žiadne.
API a dátové štruktúry
Metódy triedy FileStorage pracujú s asociatívnymi poľami PHP.
Frontend požiadavky
Nerelevantné.
Backend požiadavky
- PHP 8.2.
- Prístupové práva na zápis do
data/.
Testovací scenár
- Vytvor testovací skript, ktorý vytvorí inštanciu
FileStorage. - Skús uložiť pole
['test' => 123]dousers/test.json. - Over, či súbor existuje a obsahuje správny JSON.
- Skús načítať dáta zo súboru.
- Skús zadať cestu s
../a over, či služba vyhodí výnimku alebo chybu (path traversal protection).
Definition of Done
- Trieda
FileStorageje funkčná a otestovaná. - Ukladanie a načítavanie JSON dát funguje bezpečne.
- Path traversal ochrana je implementovaná.
Obmedzenia
- Nepoužívaj žiadnu externú DB knižnicu.
- Všetky cesty musia byť relatívne k base path projektu alebo striktne v
data/.
Výstup
- zoznam vytvorených súborov
- zoznam upravených súborov
- stručné zhrnutie vykonaných zmien
- prípadné otvorené problémy