Struktur
Das App folgt einer Reihe von Konventionen, die dabei helfen, den Code zwischen allen brandbox Apps konsistent zu halten. Siehe Namenskonventionen der Apps.
Codeblock | ||
---|---|---|
| ||
brandbox/ └─ {packageapp-name}/ │ ├─ resources/ │ ├─ .phpstorm.meta.php/ │ ├─ data.conf/ │ ├─ languages/ │ │ ├─ de.xml │ │ └─ en.xml │ ├─ js/ │ ├─ dashboard.json │ └─ dashboard-config.json │ ├─ src/ (PSR-4) | └─ {PackageNamespace}/ | └─ {PackageName}/ | ├─ Lib/ | | ├─ Entity/ | | ├─ Event/ | | ├─ Exceptions/ | | ├─ Execute/ | | ├─ Listener/ │ | ├─ Migration/ | | ├─ Repository/ | | ├─ Request/ | | ├─ Structure/ | | └─ Subscriber/ | ├─ config.json | ├─ crud.json | ├─ modelling.json | ├─ structure.json | ├─ widget.json | └─ *Manager.php | └─ Engine.php │ ├─ test/ (PSR-4) │ ├─ Cases/ │ ├─ Resources/ │ └─ phpunit.xml.dist │ └─ composer.json |
...
Ordner | Inhalt |
---|---|
Controller und Routing | |
/src/{PackageNamespace}/{PackageName}/Lib/Engine.php | Basis-Controller. Siehe Controller und Routing. |
/src/{PackageNamespace}/{PackageName}/Lib/*Manager.php | Basis-Controller. Siehe Controller und Routing. |
/src/{PackageNamespace}/{PackageName}/Lib/Execute/ | Auszuführender Code, der statusändernden Character hat. Siehe Controller und Routing |
/src/{PackageNamespace}/{PackageName}/Lib/Request/ | Auszuführender Code, der Inhalte an einen Endpunkt ausgibt. Siehe Controller und Routing |
Doctrine | |
/src/{PackageNamespace}/{PackageName}/Lib/Entity/ | Doctrine-Entities. Siehe Entitäten um individuelle Properties anreichern |
/src/{PackageNamespace}/{PackageName}/Lib/Repository/ | Doctrine-Repositories |
Crud | |
/src/{PackageNamespace}/{PackageName}/crud.json | Definition von geführten Aktionen zum Löschen/Kopieren. Siehe Crud. |
Modelling | |
/src/{PackageNamespace}/{PackageName}/widget.json | Definition vorhandener Datenbanktabellen (Entities) sowie die Beziehung zwischen Datenbanktabellen. Siehe Widget (Component/Widget). |
/src/{PackageNamespace}/{PackageName}/structure.json | Strukturdefinitionen. Siehe Widget (Component/Widget). |
/src/{PackageNamespace}/{PackageName}/modelling.json | Modellingdefinition. Siehe Widget (Component/Widget). |
PSR-14 / Events | |
/src/{PackageNamespace}/{PackageName}/Lib/Event/ | Events, die von \Symfony\Contracts\EventDispatcher\Event ableiten (siehe Event). |
/src/{PackageNamespace}/{PackageName}/Lib/Listener/ | Listener enthalten in brandbox den auszuführenden Code. Sie werden von den Subscribern aufgerufen und ausgeführt. |
/src/{PackageNamespace}/{PackageName}/Lib/Subscriber/ | Subscriber, die von \Symfony\Component\EventDispatcher\EventSubscriberInterface ableiten. |
Allgemeines | |
/src/{PackageNamespace}/{PackageName}/Lib/Exceptions/ | Ein zentraler Ort für alle Exceptions des Packages |
/src/{PackageNamespace}/{PackageName}/Lib/Migration/ | Migrationen. Siehe Migrate. |
/src/{PackageNamespace}/{PackageName}/js/ | Javascript-Code der sich auf dieses Package bezieht |
Ressourcen | |
/resources/.phpstorm.meta.php/ | PhpStorm advanced metadata |
/resources/data.conf/ | XSLT-Datein zur Verwendung bei Ex- und Import-Transformationen. Siehe Transformationen. |
/resources/languages/ | Zwei Dateien, die immer existieren müssen: de.xml und en.xml. Siehe Übersetzungen (i18n). |
/resources/js/ | Javascript-Dateien der App. |
/resources/dashboard.json | Eine Datei zur Strukturierung eines Dashboards. Siehe Dashboard. |
/resources/dashboard-config.json | Eine Datei zur Erstellung eines Dashboards. Siehe Dashboard. |
...
- modelling.json kann genutzt werden, um Fremde Entities anzureichern (ODM-like oder in Verbindung mit Doctrine: Entitäten um individuelle Properties anreichern)
- Das ist eine gute Möglichkeit, um Aspekte passiv und konsequent zu trennen
- structure.json und widget.json, siehe Widget (Component/Widget)
PSR-14 / Events
- PSR-14 ist ein Standard mit dem Ziel eine gemeinsame Schnittstellen zum Verteilen und Behandeln von Ereignissen zu ermöglichen. Bibliotheken sollen erstellt werden können, die mit vielen Apps / Paketen auf gemeinsame Weise interagieren können
- Event-Ordner folgen einer Konvention
- /Event
- /Listener/{PackageName}/
- /Subscriber/{PackageName}Subscriber.php
- Events und Subscriber dürfen, wie MainController, keine Logik enthalten
- Listener entsprechen organisatorisch SubControllern und dürfen demnach auch Controller\ControllerRequestAbstract oder Controller\ControllerExecuteAbstract erweitern