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.
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.
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:
- Datei-Pfad aus Env-Variable (
DB_PASSWORD_FILE) - Default-Secret-File (
/run/secrets/db_password) - Direkte Env-Variable (
getenv('DB_PASSWORD')) - 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
| Methode | Beschreibung |
|---|---|
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-Version | Status |
|---|---|
| v11 | Unterstützt |
| v12 | Unterstützt (pagesection-Cache wird automatisch entfernt) |
| v13 | Unterstützt (imagesizes-Cache wird automatisch entfernt) |
| v14 | Unterstü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.
GitLab (Source of Truth)
Primäres Repository inkl. CI/CD und Composer-Package-Registry.
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.
Oder direkt schreiben: kontakt@moselwal.de