4.0.0 — PHP 8.3–8.5 support, GD-native rendering & modernization.
⚠️ Major release with breaking changes. Read the Upgrade Guide before upgrading from 3.x.
Delivered by #75 (version corrected in #76) · Epic #74 · Closes #73, #68, #69, #34, #32.
Added
- Pure-GD render backend
Da\QrCode\Renderer\GdImageBackEnd— PNG/JPG no longer require ImageMagick (onlyext-gd). Fixes the WindowsRegistryKeyLookupFailed 'CoderModulesPath'error (#68). - Framework-agnostic PSR-15
Da\QrCode\Bridge\Psr\QrCodeActionfor Yii3 and any PSR-15 app (Mezzio, Slim, …). - vCard
PHOTOvia Base64 / data-URI / local file (#69); MeCardORGfield (#34); troubleshooting guide answering #32.
Changed
- Requires PHP 8.3 / 8.4 / 8.5 (dropped < 8.3).
- Dropped
marc-mabe/php-enum—Enums\*keep the same constants (no API change). bacon/bacon-qr-code→^3,khanamiryan/qrcode-detector-decoder→^2.- PNG/JPG render with GD by default; ImageMagick is opt-in via the writer constructor.
- Framework adapters reorganized under
Da\QrCode\Bridge\<Framework>\(Yii2 / Laravel / Psr); dropped redundantLaravelclass-name prefixes. StyleManager::getGradientTye()→getGradientType()(deprecated alias kept);QrCode::getGradientType()now returns aGradientType.- Modern toolchain: php-cs-fixer v3, PHPStan, CI matrix on 8.3/8.4/8.5.
Fixed
- Radial / inverse-diagonal gradients rendering as solid black.
Bridge\Laravel\QrCodeFactoryworks standalone when Laravel'sconfig()is unbound.
Full changelog: CHANGELOG.md · Upgrade: UPGRADE-4.0.md