Projektstruktur
Eine durchgeführte Tour jedes Verzeichnisses eines Nibiru-Projekts.
my-app/├── core/ # Framework code (don't edit)│ ├── a/ # Abstract classes + adapters│ ├── c/ # Concrete classes (router, view, form types…)│ ├── f/ # Factories (db, form)│ ├── i/ # Interfaces│ ├── l/ # Composer vendor (yes, in core/)│ ├── t/ # Traits│ └── framework.php # Main bootstrap├── application/ # Your app│ ├── controller/ # *Controller.php files│ ├── model/ # Auto-generated models (from DB schema)│ ├── module/ # Modules (the second M in MMVC)│ │ └── users/ # each with its own MVC + plugins│ ├── settings/│ │ └── config/│ │ ├── settings.<env>.ini│ │ ├── database/ # numbered SQL migration files│ │ └── navigation/main.json│ └── view/│ ├── templates/ # Smarty .tpl files│ ├── templates_c/ # Smarty compile cache (auto)│ ├── cache/ # HTML cache (when caching=true)│ └── mockup/ # Static design mockups├── public/ # CSS / JS / images / fonts (web-served)├── nibiru # CLI binary├── index.php # Entry point├── composer.json└── vhost.conf # Sample nginx vhostBemerkenswerte Konventionen
Abschnitt betitelt „Bemerkenswerte Konventionen“Controller
Abschnitt betitelt „Controller“- Datei:
application/controller/<name>Controller.php - Klasse:
Nibiru\<name>Controller extends Nibiru\Adapter\Controller - Erforderliche Methoden:
pageAction(),navigationAction(). Optional: jede<verb>Action().
Ansichten
Abschnitt betitelt „Ansichten“- Datei:
application/view/templates/<name>.tplfür den entsprechenden Controller. - Unteransichten befinden sich unter
application/view/templates/<name>/<action>.tpl. - Gemeinsame Teile liegen in
application/view/templates/shared/.
Modelle
Abschnitt betitelt „Modelle“- Automatisch unter
application/model/generiert. - Dateinamen entsprechen Tabellennamen. Jede Klasse erweitert einen
DbAdapter (MySQL\DboderPostgreSQL\Db).
- Ordner:
application/module/<name>/ - Jedes Modul ist eine eigene MVC-Insel plus Traits, Plugins, Schnittstellen und Einstellungen.
- Der Registry entdeckt automatisch die
*.ini-Einstellungen innerhalb dessettings/-Ordners jedes Moduls.
Migrationen
Abschnitt betitelt „Migrationen“application/settings/config/database/<NNN>-<slug>.sql- Nummeriert. Führen Sie über
./nibiru -mi <env>aus. - Eine Datei pro logischer Änderung – vermeiden Sie die Zusammenführung.
Composer Vendor in core/l/
Abschnitt betitelt „Composer Vendor in core/l/“Dies ist absichtlich. composer.json setzt vendor-dir: core/l. Der Autoloader des Frameworks erwartet es dort. Bewegen Sie es nicht.
templates_c/ und cache/
Abschnitt betitelt „templates_c/ und cache/“Smarty muss in die templates_c/ schreiben können. Das Zwischenspeichern ist über den INI-Schlüssel [ENGINE] caching = true optional. Beide Ordner sollten in Ihrer .gitignore enthalten sein.