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.

Codeblock
languagetext
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/
      |        | |  └─ {PackageOfEvent}/
      |        | |     └─ EventListener.php
      │        | ├─ Migration/
      |        | ├─ Repository/
      |        | ├─ Request/
      |        | ├─ Structure/ 
      |        | └─ Subscriber/
      |        |    └─ {PackageOfEvent}Subscriber.php
      |        ├─ 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

Ordner

Inhalt

Controller und Routing

/src/{PackageNamespace}/{PackageName}/Lib/Engine.php

Migrationen

Basis-Controller. Siehe Controller und Routing.

/src/{PackageNamespace}/{PackageName}/Lib/*Manager.php

Migrationen

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