Skip to content

Repository files navigation

🛡️ Business Core

PHP 8.4+ Pest PHPStan Level 8 License MIT

Business Core ist eine hochperformante, Framework-unabhängige PHP-Library zur Orchestrierung von Domain-Driven Design (DDD) Use Cases. Sie bietet eine deterministische Pipeline für Autorisierung, Guard-Prüfungen, Event-Dispatching und manipulationssicheres (append-only) Auditing.

Das Paket kommt mit Zero-Dependencies auf externe Framework-Fassaden (kein Laravel, kein Eloquent, kein Livewire) und eignet sich ideal als robuster, in sich geschlossener Core für komplexe Enterprise-Architekturen.


⚡️ Quickstart

📦 Installation

Das Paket kann direkt über Composer in Deine (Host-)Applikation installiert werden:

composer require allgorithm/business-core

🚀 Die Operation Pipeline in Action

Die Kernkomponente ist die OperationPipeline. Sie sorgt dafür, dass jede Operation zwingend autorisiert wird, Guards passiert, Fehler sicher fängt und lückenlos auditiert:

use BusinessCore\Application\Operations\OperationPipeline;
use BusinessCore\Application\Context\OperationContext;
use BusinessCore\Application\Context\ActorContext;

// 1. Pipeline mit konkreten Adaptern initialisieren
$pipeline = new OperationPipeline(
    $authorizationAdapter, 
    $guardResolver, 
    $eventDispatcher, 
    $auditWriter
);

// 2. Kontext für den Akteur (z.B. HTTP User) erstellen
$context = new OperationContext(
    actor: new ActorContext('user-uuid-123'),
    tenantId: 'tenant-456'
);

// 3. Operation sicher ausführen
$result = $pipeline->run(
    operation: new PublishProductOperation(),
    command: new PublishProductCommand($productId),
    context: $context
);

// Das Result ist immer deterministisch und fängt Throwable ab.
if ($result->isSuccess()) {
    // Erfolgreich
}

🏛️ Public Contracts & Statuswerte

Der Core orchestriert Logik ausschließlich über saubere Interfaces (Contracts). Die wesentlichen Bestandteile:

  • OperationContract: Definiert eine Business-Aktion inklusive Permissions, Guards und Deskriptor.
  • AuthorizationContract: Framework-unabhängige Prüfung der Berechtigung.
  • OperationGuardContract: Abgekoppelte Vorbedingungen, die strukturiert als CheckResult zurückmelden, ob eine Aktion erlaubt ist.
  • AuditWriterContract: Strikt Append-Only Revisionsprotokoll für alle Ausgänge (AuditEntry).

🚦 Abbruchregeln (Pipeline Flow)

Die Ausführung einer Operation über die OperationPipeline folgt deterministischen Regeln:

  1. Invalid Context: Fehlendes Zielobjekt (target === null) führt vor jeder Prüfung sofort zu FAILED.
  2. Missing Permission: Schlägt die Autorisierung fehl, gibt die Pipeline UNAUTHORIZED zurück (Guards & Handler werden nicht ausgeführt).
  3. Guards failed: Sobald ein Guard ein erforderliches FAIL oder ein ERROR meldet, wird die Ausführung mit BLOCKED abgebrochen.
  4. Exceptions: Jegliche \Throwable in der handle()-Logik wird gefangen und strukturiert in ein FAILED-Resultat umgewandelt. Niemals crasht der Request unkontrolliert!
  5. Audit First: Egal welcher Ausgang (Erfolg, Blockiert, Fehler), die AuditStage schreibt immer lückenlos einen revisionssicheren AuditEntry.

📊 OperationStatus

Jedes Ergebnis wird einheitlich als OperationResult zurückgegeben, welches den definitiven Status trägt:

enum OperationStatus: string
{
    case SUCCESS = 'success';
    case BLOCKED = 'blocked';
    case UNAUTHORIZED = 'unauthorized';
    case FAILED = 'failed';
}

📄 Lizenz & Contributing

Dieses Projekt ist unter der MIT Lizenz veröffentlicht. Pull Requests und Feedback sind herzlich willkommen!

About

🛡️ A high-performance, zero-dependency PHP foundation for orchestrating Domain-Driven Design use cases, strict guards, and append-only auditing. (Unterstreicht Schutz, strikte Guards und Revisionssicherheit)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages