Extension · moselwal/typo3-config · MIT-Lizenz

typo3-config — Konfiguration als fluent API.

Schluss mit kopierter LocalConfiguration. typo3-config liefert eine fluent, chainable API für TYPO3-Konfiguration mit Context-basierten Presets (Production, Development, CLI, Testing) und cascading Secret-Resolution. MIT-Lizenz, läuft von TYPO3 11 bis 14.

Das Problem

Konfigurations-Code, der von Projekt zu Projekt migriert.

Mit typo3-config

  • Fluent, chainable API: $config->forContext('Production')->withCache(...)
  • Context-basierte Presets: Production, Development, CLI, Testing
  • Cascading Secret-Resolution über secret-resolver
  • Caching-Auto-Konfiguration via keyvalue-store
  • TLS/mTLS-Discovery automatisch
  • Mailer- und Logging-Helpers

Bisher

  • Kopierte AdditionalConfiguration mit Magic-Strings
  • Keine Trennung zwischen Production-, Dev- und CLI-Setup
  • Secrets als Plain-ENV-Lookups, kein Cascading
  • Caching-Konfiguration als Boilerplate
  • TLS/mTLS-Discovery händisch

Vier Bausteine

Mailer/Logging-Helpers

Vorgefertigte Setups für Symfony-Mailer (SMTP/Sendmail/Postmark), Monolog-Channels mit Context-Anreicherung, Rotating-File-Handler.

Secret-Cascading

Integration mit secret-resolver — Secrets aus File, ENV oder Default-Fallback, sauber priorisiert.

Context-Presets

Production, Development, CLI, Testing — jedes mit sinnvollen Defaults, die per Methode überschrieben werden können.

Fluent API

Chainable Konfigurations-Methoden statt Array-Manipulation — IDE-Autocomplete, statische Analyse, Tests einsetzbar.

Installation: composer require moselwal/typo3-config

TYPO3: 11 – 14.0 · PHP: 8.2+ · Lizenz: MIT · Erforderlich: composer/installers · Optional: moselwal/keyvalue-store

Composer-Repository unter gitlab.moselwal.io einbinden, dann composer require moselwal/typo3-config.

Quick Start

In Ihrer config/config.php:

 

<?php

use Moselwal\Config;

Config::initialize()
    ->loadCoreSecrets()
    ->loadMailSecrets()
    ->autoconfigureCaching();

 

Erweiterte Verwendung

 

Config::get()
    ->useGraphicsMagick()
    ->useMailpit()
    ->autoconfigureCaching()
    ->setPhpSettings([
        'memory_limit' => '512M',
        'max_execution_time' => 120,
    ])
    ->setConfigPathValues('SYS', [
        'defaultScheme' => 'https',
    ]);

Secret Management

Secrets werden über eine Cascading-Lookup-Reihenfolge aufgelöst:

  1. Datei-Pfad aus Env-Variable (DB_PASSWORD_FILE)
  2. Default-Secret-File (/run/secrets/db_password)
  3. Direkte Env-Variable (getenv('DB_PASSWORD'))
  4. Fallback-Parameter (optional)
# Docker-Secrets oder Kubernetes-Mounts
echo "supersecret" > /run/secrets/db_password

 

Config::get()->loadCoreSecrets();

 

Es müssen keinerlei Secrets in Git oder .env-Dateien committet werden.

Presets & Kompatibilität

Verfügbare Presets

MethodeBeschreibung
applyDefaults()Wählt automatisch das Preset basierend auf dem TYPO3-Context
useCliPreset()Optimiert für CLI-Calls mit Debug-Output
useDevelopmentPreset()Settings für Development-Umgebungen
useProductionPreset()Production mit APP_ROOT (Container)
useProductionPresetVHost()Production mit VHost-basiertem Setup

TYPO3-Versions-Kompatibilität

TYPO3-VersionStatus
v11Unterstützt
v12Unterstützt (pagesection-Cache wird automatisch entfernt)
v13Unterstützt (imagesizes-Cache wird automatisch entfernt)
v14Unterstützt

Architektur

 

src/
├── Config.php              # Hauptklasse (Singleton, Fluent API)
└── ConfigInterface.php     # Öffentlicher Contract
tests/
├── ConfigTestCase.php      # Basis-Testklasse (Singleton-Reset, $GLOBALS-Isolation)
├── TestableConfig.php      # Test-Subclass für Versions-Injection
└── ...                     # 35+ Tests mit >120 Assertions

 

Singleton-Pattern über Config::initialize() / Config::get(); Namespace Moselwal\src/ (PSR-4); Late-Static-Binding (new static()) ermöglicht projektspezifische Erweiterungen.

Quellcode & Doku

TYPO3 Extension Repository

Nicht im offiziellen TER — Installation ausschließlich über Composer.

Composer-Package

moselwal/typo3-config via Moselwal-Composer-Repo — MIT-Lizenz, frei nutzbar.

Composer-Repo öffnen

GitLab (Source of Truth)

Primäres Repository inkl. CI/CD und Composer-Package-Registry.

gitlab.moselwal.io

GitHub

Mirror auf GitHub (Platzhalter — vor Publish verifizieren).

github.com/moselwal/typo3-config
Nächster Schritt

TYPO3-Setup vereinheitlichen?

typo3-config ist Open Source und MIT-lizenziert. Für Refactor von Bestand, Migration aus AdditionalConfiguration-Wildwuchs oder Standardisierung mehrerer TYPO3-Installationen helfen wir gerne.

Refactor besprechen

Oder direkt schreiben: kontakt@moselwal.de