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.

...

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

Aufbau

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

/src/{PackageNamespace}/{PackageName}/Lib/Query/

Queries. Siehe Query

/src/{PackageNamespace}/{PackageName}/Lib/Dto/

Dtos. Siehe Query

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}/config.json

Ermöglicht individuelle Konfigurationen für das Package. Hier wird auch der FriendlyName gepflegt.

/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 (Base/Dashboard).

/resources/dashboard-config.json

Eine Datei zur Erstellung eines Dashboards. Siehe Dashboard (Base/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

Installation

  • Es gibt Migrationsmöglichkeiten

  • Es gibt Events die bei der Installation greifen

Doctrine

Modelling 

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