Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Struktur

Das App folgt einer Reihe von Konventionen, die dabei helfen, den Code zwischen allen brandbox Apps konsistent zu halten. Siehe Namenskonventionen der Apps.

...

OrdnerInhalt
Controller und Routing
/src/{PackageNamespace}/{PackageName}/Lib/Engine.phpBasis-Controller. Siehe Controller und Routing.
/src/{PackageNamespace}/{PackageName}/Lib/*Manager.phpBasis-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.jsonDefinition von geführten Aktionen zum Löschen/Kopieren. Siehe Crud.
Modelling
/src/{PackageNamespace}/{PackageName}/widget.jsonDefinition vorhandener Datenbanktabellen (Entities) sowie die Beziehung zwischen Datenbanktabellen. Siehe Widget.
/src/{PackageNamespace}/{PackageName}/structure.jsonStrukturdefinitionen. Siehe Widget.
/src/{PackageNamespace}/{PackageName}/modelling.jsonModellingdefinition. Siehe 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.
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.jsonEine Datei zur Strukturierung eines Dashboards. Siehe Dashboard.
/resources/dashboard-config.jsonEine Datei zur Erstellung eines Dashboards. Siehe Dashboard.

Worauf ist zu achten? Besondere Hinweise.

App und Packages

  • Der Name einer App folgt einer Namenskonvention, siehe Namenskonventionen der Apps
  • Es gibt in jeder App das Main-Package. Darin enthalten sind RoleSchemes und Suggestions
  • Der Name eines Packages setzt sich aus dem Namespace und dem Name zusammen. In dieser Kombination darf ein Package nur ein Mal in der Installation vorkommen.
  • Dashboard, Sprachen und Javascript-Dateien liegen zentral im Ordner /resources/

Controller

  • Es gibt MainController und SubController (Controller\ControllerRequestAbstract oder Controller\ControllerExecuteAbstract)
  • Controller sind immer frei Logik zu halten
  • MainController repräsentieren die API – Auf SubController darf nur innerhalb des Packages zugegegriffen werden 

...

  • 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

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