PHPackages                             imjonos/laravel-base-dto - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. imjonos/laravel-base-dto

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

imjonos/laravel-base-dto
========================

Laravel base DTO

1.0.1(2mo ago)08MITPHP

Since Apr 9Pushed 2mo agoCompare

[ Source](https://github.com/imjonos/laravel-base-dto)[ Packagist](https://packagist.org/packages/imjonos/laravel-base-dto)[ Docs](https://github.com/imjonos/laravel-base-dto)[ RSS](/packages/imjonos-laravel-base-dto/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

📦 Laravel Base DTO
==================

[](#-laravel-base-dto)

[![Latest Version on Packagist](https://camo.githubusercontent.com/b3d14967b5c3fbc9ca54823a826d516083905777c69816a7319015ed1e070ce4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696d6a6f6e6f732f6c61726176656c2d626173652d64746f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/imjonos/laravel-base-dto)
[![Total Downloads](https://camo.githubusercontent.com/f1d2c82343bfc3c104005d51718e2becd9b0c335bbfabf3114d0adc63b02e52c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f696d6a6f6e6f732f6c61726176656c2d626173652d64746f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/imjonos/laravel-base-dto)

A **generic base DTO (Data Transfer Object) implementation** for Laravel projects that provides a consistent and reusable way to handle data transformation and transfer between application layers. This package offers abstract classes and interfaces for creating DTOs and DTO collections with support for array and JSON transformations.

---

🧩 Overview
----------

[](#-overview)

This package provides a complete DTO (Data Transfer Object) implementation for Laravel applications. It includes abstract classes and interfaces for creating DTOs and DTO collections with built-in support for data transformation between array and JSON formats. The implementation follows SOLID principles and provides a consistent way to handle data transfer between different layers of your application.

---

🛠 Installation
--------------

[](#-installation)

Install the package via Composer:

```
composer require imjonos/laravel-base-dto
```

---

✅ Usage
-------

[](#-usage)

### 1. Create Your DTO Class

[](#1-create-your-dto-class)

Create a new DTO class that implements DtoInterface and uses the provided traits for data transformation. Here's a complete example:

```
namespace App\DTO;

use Nos\BaseDto\Interfaces\DtoInterface;
use Nos\BaseDto\Traits\DataTransforms\ArrayDataTransformable;

final class UserDTO implements DtoInterface
{
    use ArrayDataTransformable;

    private function __construct(
        public string $name,
        public string $code,
        public int $numCode,
        public float $rate,
    ) {}

    public static function fromArray(array $data): self
    {
        return new UserDTO(
            $data['name'] ?? '',
            $data['email'] ?? '',
        );
    }
}
```

### 2. Create Your DTO Collection

[](#2-create-your-dto-collection)

Create a collection class for your DTOs:

```
namespace App\DTO;

use Nos\BaseDto\DTOCollection;

class UserCollection extends DTOCollection
{
    protected function createDTO(array $array): UserDTO
    {
        return UserDTO::fromArray($array);
    }
}
```

### 3. Use DTOs in Your Application

[](#3-use-dtos-in-your-application)

Transform data between different formats:

```
// Create DTO from array
$userData = [
    'name' => 'John Doe',
    'email' => 'john@example.com',
    'created_at' => '2023-01-01 12:00:00'
];
$userDTO = UserDTO::fromArray($userData);

// Convert DTO to array
$array = $userDTO->toArray();

// Convert DTO to JSON
$json = $userDTO->toJson();

// Work with collections
$users = UserCollection::fromArray([$userData, $userData]);
$users->each(fn ($user) => echo $user->name);
```

---

🔧 Available Features
--------------------

[](#-available-features)

### DTO Interface

[](#dto-interface)

- `fromArray(array $data)`: Create DTO instance from array data
- `toArray()`: Convert DTO to array format
- `fromJson(string $json)`: Create DTO instance from JSON string
- `toJson()`: Convert DTO to JSON string

### DTO Collection

[](#dto-collection)

- Implements `Iterator` and `Countable` interfaces
- `fromArray(array $data)`: Create collection from array data
- `map(callable $callback)`: Transform collection items
- `each(callable $callback)`: Iterate through collection items
- `filter(callable $callback)`: Filter collection items
- `findBy(callable $callback)`: Find first item matching criteria
- `findByKey(int $key)`: Find item by index/key
- `findByKeyAndValue(string $key, string $value)`: Find item by property value

---

🌐 Project Structure
-------------------

[](#-project-structure)

```
vendor/
└── imjonos/
    └── laravel-base-dto/
        ├── src/
        │   ├── DTOCollection.php
        │   ├── Interfaces/
        │   │   ├── CollectionInterface.php
        │   │   ├── DtoCollectionInterface.php
        │   │   ├── DtoInterface.php
        │   │   └── DataTransforms/
        │   │       ├── ArrayDataTransforms.php
        │   │       └── JsonDataTransforms.php
        │   └── Traits/
        │       └── DataTransforms/
        │           ├── ArrayDataTransformable.php
        │           └── JsonDataTransformable.php

```

---

📦 Requirements
--------------

[](#-requirements)

- PHP 8.0+
- Laravel 9+
- PHP Reflection extension (for property introspection)

---

🧪 Testing
---------

[](#-testing)

DTOs are easy to test as they are simple data objects. You can write unit tests to verify data transformation methods and collection operations. The immutability and pure functions in DTOs make them predictable and reliable in tests.

---

📝 License
---------

[](#-license)

This package is open-sourced software licensed under the MIT license. Please see the [license file](license.md) for more information.

---

🚀 Contributing
--------------

[](#-contributing)

Please see [contributing.md](contributing.md) for details and a todolist.

🌟 Features
----------

[](#-features)

- **Type Safety**: Uses PHP generics (via PHPDoc) for better IDE support and type checking
- **Data Transformation**: Built-in support for array and JSON transformations
- **Collection Operations**: Full-featured collection class with iterator support
- **Extensible Design**: Easy to extend with custom transformation logic
- **Framework Agnostic Core**: While designed for Laravel, the core DTO functionality can be used in any PHP project

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance85

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

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

2

Last Release

78d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a691ecb149ac661add3a6229e3c545aaaa40bad4ae0fa9c0ad9464c79e86ff20?d=identicon)[Eugeny Nosenko](/maintainers/Eugeny%20Nosenko)

---

Tags

laraveldto

### Embed Badge

![Health badge](/badges/imjonos-laravel-base-dto/health.svg)

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

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[renatomarinho/laravel-page-speed

Laravel Page Speed

2.5k1.7M11](/packages/renatomarinho-laravel-page-speed)[vinkius-labs/laravel-page-speed

Laravel Page Speed

2.5k9.6k1](/packages/vinkius-labs-laravel-page-speed)[emargareten/inertia-modal

Inertia Modal is a Laravel package that lets you implement backend-driven modal dialogs for Inertia apps.

90128.1k](/packages/emargareten-inertia-modal)[linkxtr/laravel-qrcode

A clean, modern, and easy-to-use QR code generator for Laravel

3614.9k](/packages/linkxtr-laravel-qrcode)[wearepixel/laravel-cart

A cart implementation for Laravel

1355.6k](/packages/wearepixel-laravel-cart)

PHPackages © 2026

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