PHPackages                             digitalpi/laravel-dto-validator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. digitalpi/laravel-dto-validator

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

digitalpi/laravel-dto-validator
===============================

DTO injector and validator with attributes, inspired by Spring Boot bean validation.

1.0.7(1y ago)0792MITPHPPHP &gt;=8.1

Since Jun 17Pushed 1y agoCompare

[ Source](https://github.com/papesambandour/laravel-dto-validator)[ Packagist](https://packagist.org/packages/digitalpi/laravel-dto-validator)[ RSS](/packages/digitalpi-laravel-dto-validator/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (3)Versions (6)Used By (0)

Laravel DTO Validator
=====================

[](#laravel-dto-validator)

This package allows you to use DTOs with attribute-based validation, just like in Spring Boot.

🚀 Features
----------

[](#-features)

- Auto-inject DTOs into controllers from Request
- Validate with PHP 8+ attributes (like #\[Rules(\[\])\])
- UploadedFile support

📦 Installation
--------------

[](#-installation)

```
composer require digitalpi/laravel-dto-validator
```

🧩 Setup
-------

[](#-setup)

Register the middleware in your `app/bootstrap/app.php`:

```
->withMiddleware(function (Middleware $middleware): void {
        $middleware->web(append: [
            \DigitalPi\DtoValidator\Middleware\InjectDtoMiddleware::class,
        ]);
        //or
        $middleware->api(append: [
            \DigitalPi\DtoValidator\Middleware\InjectDtoMiddleware::class,
        ]);
    })
```

📁 Example
---------

[](#-example)

```
use DigitalPi\DtoValidator\Attributes\Rules;
use Illuminate\Http\UploadedFile;

class UserDTO
{
    #[Rules(['required'])]
    public ?string $username;

    #[Rules(['required'])]
    public ?string $phone;

    #[Rules(['required', 'file', 'mimes:jpg,png'])]
    public ?UploadedFile $avatar;
}
```

```
use App\DTO\UserDTO;
use DigitalPi\DtoValidator\DtoValidator;

class UserController
{
    public function store(UserDTO $dto, DtoValidator $validator)
    {
        $validator->validate($dto);
        $path = $dto->avatar->store('avatars');

        return response()->json([
            'username' => $dto->username,
            'stored' => $path,
        ]);
    }
}
```

✅ Requirements
--------------

[](#-requirements)

- PHP 8.1+
- Laravel 10 or 11 or 12

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance48

Moderate activity, may be stable

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

5

Last Release

381d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/28fc2047849bf0e3798c42af4f670a600a0e7d44437b9d6299e259f49dcc2d78?d=identicon)[papesambandour](/maintainers/papesambandour)

---

Top Contributors

[![papesambandour](https://avatars.githubusercontent.com/u/29578919?v=4)](https://github.com/papesambandour "papesambandour (10 commits)")

### Embed Badge

![Health badge](/badges/digitalpi-laravel-dto-validator/health.svg)

```
[![Health](https://phpackages.com/badges/digitalpi-laravel-dto-validator/health.svg)](https://phpackages.com/packages/digitalpi-laravel-dto-validator)
```

###  Alternatives

[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

77022.3M151](/packages/laravel-mcp)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[spatie/laravel-honeypot

Preventing spam submitted through forms

1.6k6.8M75](/packages/spatie-laravel-honeypot)[sandermuller/laravel-fluent-validation

Fluent validation rule builders for Laravel

20719.0k4](/packages/sandermuller-laravel-fluent-validation)[api-platform/laravel

API Platform support for Laravel

58171.6k14](/packages/api-platform-laravel)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
