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(11mo ago)0788MITPHPPHP &gt;=8.1

Since Jun 17Pushed 11mo 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 1mo ago

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

33

—

LowBetter than 75% of packages

Maintenance52

Moderate activity, may be stable

Popularity13

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

334d 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

[spatie/laravel-honeypot

Preventing spam submitted through forms

1.6k6.0M60](/packages/spatie-laravel-honeypot)[propaganistas/laravel-phone

Adds phone number functionality to Laravel based on Google's libphonenumber API.

3.0k35.7M107](/packages/propaganistas-laravel-phone)[proengsoft/laravel-jsvalidation

Validate forms transparently with Javascript reusing your Laravel Validation Rules, Messages, and FormRequest

1.1k2.3M49](/packages/proengsoft-laravel-jsvalidation)[wendelladriel/laravel-validated-dto

Data Transfer Objects with validation for Laravel applications

759569.4k13](/packages/wendelladriel-laravel-validated-dto)[axlon/laravel-postal-code-validation

Worldwide postal code validation for Laravel and Lumen

3853.3M1](/packages/axlon-laravel-postal-code-validation)[sunspikes/clamav-validator

Custom Laravel 5 anti-virus validator for file uploads.

3651.8M3](/packages/sunspikes-clamav-validator)

PHPackages © 2026

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