Požadavek #928
otevřenýPožadavek #921: Modularita
Adresářová struktura pro podporou modulů s jmennými prostory PHP tříd
0%
Popis
Zavést systém adresářů s moduly /modules/, každá podsložka reprezentující modul bude obsahovat:
- application
- controllers
- helpers
- i18n
- libraries
- models
- views
- db_upgrades
- doc
- media
- module.php (soubor s definicemi verze, názvu apod.)
V repozitář modulu bude vypada následovně (tj. nebude v hlavním repozitáři):
- src (výše popsaný obsah)
- test
- deb
- README
- LICENCE
PHP třídy bude mít každý modul ve vlastním PHP jmenném prostoru \freenetis\module\<jméno modulu>\<x>\<y>\<z>.
x, y, z bude respektovat adresářovou strukturu (stejně jako balíček v Javě), pokud budu mít teda controller Abc_Controller modulu abeceda pak jeho jmenný prostor bude \freenetis\module\abeceda\controllers. Pokud by byl ve složce controllers/a/ pak by se tato podložka projevila ve jmenném prostoru.
Pro podporu jmenných prostorů musí být vyhozen starý Kohaňácký nepořádek (Core a My třídy) a musí být přespán autoloader tříd. Navíc je taky nutné PHP 5.3 >, ale to by snad neměl být problém.
Jmenné prostory by se nakonec měli použít i mimo moduly. Celý základní FreenetIS by byl namespace \core s podnamespacem \system atd.