Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 20 Nächste Version anzeigen »

Struktur

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

brandbox/
   └─ {package-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

Konventionen, die bei der Erstellung von Apps gelten, finden Sie hier.

Aufbau

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, Übersetzungen und Javascript-Dateien liegen zentral im Ordner /resources/
  • Es gelten PSR Coding Standards
  • Es gelten Coding conventions

Controller

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

Routing

  • Achtung bei Groß- und Kleinschreibung
  • Slashbasierte Syntax beachten

Doctrine

Modelling 

  • 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
  • Keine Stichwörter