Skip to content

v1.18.0

Latest

Choose a tag to compare

@yuriizee yuriizee released this 30 Jul 08:41

[1.18.0] — 2026-07-30

Removed

  • Support for Laravel 10 and 11.
    • Both majors are past their security-support window.
    • Every laravel/framework release on either line — including the newest patch — is now flagged by Packagist's security-advisory database.
    • Composer 2.9+ refuses to install them at all (config.policy.advisories.block rejects the resolution outright).
    • This isn't a version bump we chose; dependency resolution for those majors is no longer possible.
  • Updated minimum requirements: Minimum supported range is now Laravel 12–13.
    • illuminate/contracts, illuminate/support, illuminate/validation, illuminate/console, illuminate/database, and illuminate/http all move to ^12.0|^13.0.

[1.17.0] — 2026-07-29

Added

  • SimpleDataObjectsServiceProvider — artisan commands and automatic controller injection.
    • Manual Registration: Not auto-discovered — register it yourself in bootstrap/providers.php. Every other Laravel-facing piece in this package is already opt-in per-class, and this is the one that adds process-wide container behavior, so turning it on is a deliberate step rather than something that changes behavior for every Laravel app that installs this package.
    • Automatic Injection & Validation: Type-hint a BaseData subclass that uses HasLaravelIntegration as a controller or route-closure parameter and it hydrates + validates from the current request automatically.
      • No FormRequest needed.
      • A validation failure still surfaces as the normal ValidationException422.
    • Zero Overhead: Implemented as a beforeResolving(BaseData::class, ...) container hook scoped to BaseData and its subclasses, so it adds no overhead to unrelated container resolutions. Classes without HasLaravelIntegration, already explicitly bound classes, and abstract base classes are all left alone.
    • Global Configuration: Opt out globally with inject_from_request => false in the new publishable config/simple-data-objects.php.
    • New Artisan Commands:
      • sdo:warm / sdo:clear: Thin wrappers over the existing CacheWarmer/MetadataRegistry, auto-registered against php artisan optimize.
      • make:data: A DTO stub generator.
        • --from-model: Reads a model's table columns (Schema::getColumns(), Laravel 11+) into typed constructor-promoted properties.
        • --rules: Adds inferred #[Rules].
        • --collection: Adds a doc-comment pointing at the existing static::collection().
    • Documentation: See Service Provider & Commands.

Full Changelog: v1.16.0...v1.18.0