PHPackages                             paulo/data-transfer-object - 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. paulo/data-transfer-object

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

paulo/data-transfer-object
==========================

Simple DTO wrapper

1.0.0(2y ago)05PHPPHP &gt;=8.1

Since Feb 15Pushed 1y ago1 watchersCompare

[ Source](https://github.com/Depik400/php-data-transfer-object)[ Packagist](https://packagist.org/packages/paulo/data-transfer-object)[ RSS](/packages/paulo-data-transfer-object/feed)WikiDiscussions main Synced today

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

PHP Data Transfer Object
========================

[](#php-data-transfer-object)

[![Размер репозитория GitHub](https://camo.githubusercontent.com/27effb7373a7c9d4829530b5b1141bb4135f12c4c2c458e700281a57623e3c76/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)](https://camo.githubusercontent.com/27effb7373a7c9d4829530b5b1141bb4135f12c4c2c458e700281a57623e3c76/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)[![Язык программирования GitHub](https://camo.githubusercontent.com/d952210b26191aad0c23a05b49fe4c07214512a5b90c7bb378b2cc1b8f19b0b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c616e6775616765732f746f702f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)](https://camo.githubusercontent.com/d952210b26191aad0c23a05b49fe4c07214512a5b90c7bb378b2cc1b8f19b0b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c616e6775616765732f746f702f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)[![Последний коммит GitHub](https://camo.githubusercontent.com/bc677997727d330da39f72572ce841381d0b696c2ebf2b9c3c98f50d7329250d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)](https://camo.githubusercontent.com/bc677997727d330da39f72572ce841381d0b696c2ebf2b9c3c98f50d7329250d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)[![Проблемы GitHub](https://camo.githubusercontent.com/9b42ff670535125030ce616a46ac0d0f07aa1423b1726dac659a81b48f9c4baa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)](https://camo.githubusercontent.com/9b42ff670535125030ce616a46ac0d0f07aa1423b1726dac659a81b48f9c4baa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f446570696b3430302f7068702d646174612d7472616e736665722d6f626a656374)

Проект предназначен для работы с умными объектами (Smart objects) в PHP.

Содержание
----------

[](#содержание)

- [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Использование](#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
- [Умные Атрибуты](#%D1%83%D0%BC%D0%BD%D1%8B%D0%B5-%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D1%8B)
- [Вклад](#%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4)
- [Лицензия](#%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

### Требования

[](#требования)

- PHP 8.2 и выше
- Composer

### Установка

[](#установка)

```
composer require paulo/data-transfer-object
```

Умные Атрибуты
--------------

[](#умные-атрибуты)

### `PropertyMapFrom`

[](#propertymapfrom)

Позволяет указать источник данных для свойства объекта.

```
#[PropertyMapFrom('source.from.key.innerKey')]
public mixed $property;
```

### `PropertyMapTo`

[](#propertymapto)

Позволяет указать место назначения данных для свойства объекта.

```
#[PropertyMapTo('destination.to.qwe')]
public mixed $property;
```

### `PropertyIgnoreParse`

[](#propertyignoreparse)

Игнорирует свойство при парсинге данных.

```
#[PropertyIgnoreParse]
public mixed $property;
```

### `PropertyIgnoreSerialize`

[](#propertyignoreserialize)

Игнорирует свойство при сериализации данных.

```
#[PropertyIgnoreSerialize]
public mixed $property;
```

### `PropertyInternal`

[](#propertyinternal)

Обозначает внутреннее свойство, которое не будет парситься или сериализоваться.

```
#[PropertyInternal]
public mixed $property;
```

### `PropertyParse`

[](#propertyparse)

Позволяет указать класс, который будет использоваться для парсинга данных для свойства.

```
#[PropertyParse(DateTime::class)]
public DateTime $property;
```

### `PropertyParseArray`

[](#propertyparsearray)

Позволяет указать класс и дополнительные параметры для парсинга массива данных.

```
#[PropertyParseArray(InternalClass::class, 'wrap', true)]
public array $property;
```

### `PropertySerialize`

[](#propertyserialize)

Позволяет указать класс и метод для сериализации данных для свойства.

```
#[PropertySerialize(InternalClass2::class, 'serialize', true, 'array')]
public InternalClass2 $property;
```

### `PropertySerializeArray`

[](#propertyserializearray)

Позволяет указать класс и метод для сериализации массива данных.

```
#[PropertySerializeArray(InternalClass2::class, 'serialize', true, InternalClass2::class)]
public array $property;
```

Example
=======

[](#example)

```
class T extends DataTransferObject
{
    #[PropertyMapTo('test.job.0')]
    #[PropertyMapFrom('tt')]
    #[PropertyParse(T::class, 'parse', true)]
    #[PropertySerialize(T::class, 'serString', true, 'string')]
    #[PropertySerialize(T::class, 'serInt', true, PhpType::Integer)]
    #[PropertySerialize(T::class, 'serNull', true, PhpType::NULL)]
    public mixed $t;

    public static function parse(mixed $v)
    {
        return 'Hello world!';
    }

    public static function serString(string $v)
    {
        return substr($v, 0, 5);
    }

    public static function serInt(int $v)
    {
        return $v * 2;
    }

    public static function serNull(mixed $v)
    {
        return 'undefined';
    }
}

$t = T::wrap(['tt' => null]);

var_dump($t->toArray());
/*
 array(1) {
  ["test"]=>
  array(1) {
    ["job"]=>
    array(1) {
      [0]=>
      string(5) "Hello"
    }
  }
}

 */
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

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

Unknown

Total

1

Last Release

870d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/8cabf28909867969dc1f8c19e4b2b16bdbaa0a978d97066485aa91ca3189079c?d=identicon)[Depik400](/maintainers/Depik400)

---

Top Contributors

[![Depik400](https://avatars.githubusercontent.com/u/46779516?v=4)](https://github.com/Depik400 "Depik400 (31 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/paulo-data-transfer-object/health.svg)

```
[![Health](https://phpackages.com/badges/paulo-data-transfer-object/health.svg)](https://phpackages.com/packages/paulo-data-transfer-object)
```

###  Alternatives

[inovector/mixpost

Self-hosted social media management software.

3.3k6.0k2](/packages/inovector-mixpost)[artisansdk/cqrs

A foundational package for Command Query Responsibility Segregation (CQRS) compatible with Laravel.

8415.8k](/packages/artisansdk-cqrs)[hacoidev/ophim-core

Ophim's core features

1028.1k25](/packages/hacoidev-ophim-core)[vinicius73/seotools

A package containing SEO helpers.

235.2k](/packages/vinicius73-seotools)

PHPackages © 2026

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