New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

adp/php-dto

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

adp/php-dto

PHP Data Transfer Object

package
Source
Packagist
Version
v1.0.0
Version published
Total downloads
5
Maintainers
1
Created
Source

PHP DTO

Simple Data Transfer Object.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist adp/php-dto "*"

or add

"adp/php-dto": "*"

to the "require" section of your composer.json file.

Alternative Packages

spatie/data-transfer-object

The package uses doc-block validation, which is inconvenient and not obvious.

Starting from PHP8, this library can be considered, since validation via phpdoc has not been available since version 3.x of the library.

Differences:

  • No toJson () function

jenssegers/model

A package is a model similar to Laravel's Eloquent, but can be used as DTO.

Differences:

  • Reflection is not used.
  • The toArray () function does not convert the internal models into an array, but leaves it as an object.

cast/model

A lightweight version of the Jessenger model.

Differences:

  • Reflection is not used.
  • The toArray () function does not convert the internal models into an array, but leaves it as an object.

PHP data structures

For some type of tasks, you can take an extension that implements the basic data structures in PHP.

Benchmark with alternative packages

Environment:

  • Mac OS
  • PHP 7.3.24
+-----------------------------------+-------------------+-----+------+-----+------------+---------+---------+---------+---------+---------+--------+--------+
| benchmark                         | subject           | set | revs | its | mem_peak   | best    | mean    | mode    | worst   | stdev   | rstdev | diff   |
+-----------------------------------+-------------------+-----+------+-----+------------+---------+---------+---------+---------+---------+--------+--------+
| CompositeDtoCreateFromStaticBench | benchPushworldDto | 0   | 1000 | 5   | 1,738,088b | 3.800μs | 3.820μs | 3.812μs | 3.849μs | 0.018μs | 0.46%  | 17.87x |
| CompositeDtoCreateFromStaticBench | benchSpatieDto    | 0   | 1000 | 5   | 1,740,000b | 7.808μs | 7.890μs | 7.849μs | 8.046μs | 0.086μs | 1.09%  | 36.90x |
| CompositeDtoCreateFromStaticBench | benchJessengerDto | 0   | 1000 | 5   | 1,935,392b | 9.045μs | 9.405μs | 9.329μs | 9.873μs | 0.273μs | 2.90%  | 43.99x |
| CompositeDtoCreateFromStaticBench | benchCastDto      | 0   | 1000 | 5   | 1,738,072b | 4.894μs | 4.920μs | 4.932μs | 4.944μs | 0.020μs | 0.41%  | 23.01x |

| CompositeDtoToArrayBench          | benchPushworldDto | 0   | 1000 | 5   | 2,031,872b | 1.231μs | 1.240μs | 1.235μs | 1.252μs | 0.008μs | 0.68%  | 5.80x  |
| CompositeDtoToArrayBench          | benchSpatieDto    | 0   | 1000 | 5   | 2,039,960b | 4.682μs | 4.799μs | 4.759μs | 4.990μs | 0.102μs | 2.12%  | 22.45x |
| CompositeDtoToArrayBench          | benchJessengerDto | 0   | 1000 | 5   | 2,031,872b | 1.776μs | 1.794μs | 1.790μs | 1.820μs | 0.016μs | 0.87%  | 8.39x  |
| CompositeDtoToArrayBench          | benchCastDto      | 0   | 1000 | 5   | 2,031,864b | 0.217μs | 0.219μs | 0.219μs | 0.222μs | 0.002μs | 0.78%  | 1.03x  |

| DtoCreateBench                    | benchPushworldDto | 0   | 1000 | 5   | 1,738,024b | 1.763μs | 1.767μs | 1.767μs | 1.771μs | 0.003μs | 0.17%  | 8.27x  |
| DtoCreateBench                    | benchSpatieDto    | 0   | 1000 | 5   | 1,738,008b | 3.727μs | 3.787μs | 3.742μs | 3.884μs | 0.065μs | 1.71%  | 17.71x |
| DtoCreateBench                    | benchJessengerDto | 0   | 1000 | 5   | 1,927,208b | 4.400μs | 4.449μs | 4.464μs | 4.477μs | 0.029μs | 0.65%  | 20.81x |
| DtoCreateBench                    | benchCastDto      | 0   | 1000 | 5   | 1,738,008b | 2.163μs | 2.205μs | 2.192μs | 2.266μs | 0.035μs | 1.58%  | 10.31x |

| DtoCreateFromStaticBench          | benchPushworldDto | 0   | 1000 | 5   | 1,738,040b | 1.926μs | 1.949μs | 1.932μs | 1.988μs | 0.025μs | 1.30%  | 9.12x  |
| DtoCreateFromStaticBench          | benchSpatieDto    | 0   | 1000 | 5   | 1,738,024b | 3.900μs | 4.047μs | 4.016μs | 4.225μs | 0.111μs | 2.75%  | 18.93x |
| DtoCreateFromStaticBench          | benchJessengerDto | 0   | 1000 | 5   | 1,927,800b | 4.670μs | 4.731μs | 4.702μs | 4.789μs | 0.049μs | 1.03%  | 22.13x |
| DtoCreateFromStaticBench          | benchCastDto      | 0   | 1000 | 5   | 1,738,024b | 2.350μs | 2.371μs | 2.359μs | 2.407μs | 0.022μs | 0.93%  | 11.09x |

| DtoToArrayBench                   | benchPushworldDto | 0   | 1000 | 5   | 2,006,968b | 0.535μs | 0.537μs | 0.536μs | 0.540μs | 0.002μs | 0.32%  | 2.51x  |
| DtoToArrayBench                   | benchSpatieDto    | 0   | 1000 | 5   | 2,014,216b | 2.310μs | 2.348μs | 2.343μs | 2.398μs | 0.032μs | 1.37%  | 10.98x |
| DtoToArrayBench                   | benchJessengerDto | 0   | 1000 | 5   | 2,006,968b | 1.713μs | 1.747μs | 1.755μs | 1.767μs | 0.020μs | 1.13%  | 8.17x  |
| DtoToArrayBench                   | benchCastDto      | 0   | 1000 | 5   | 2,006,960b | 0.208μs | 0.214μs | 0.214μs | 0.219μs | 0.004μs | 1.71%  | 1.00x  |
+-----------------------------------+-------------------+-----+------+-----+------------+---------+---------+---------+---------+---------+--------+--------+

Environment:

  • Linux in Docker
  • PHP 7.3.27 with Xdebug 3.0.4
+-----------------------------------+-------------------+-----+------+-----+------------+-------------+-------------+-------------+-------------+----------+--------+--------+
| benchmark                         | subject           | set | revs | its | mem_peak   | best        | mean        | mode        | worst       | stdev    | rstdev | diff   |
+-----------------------------------+-------------------+-----+------+-----+------------+-------------+-------------+-------------+-------------+----------+--------+--------+
| CompositeDtoCreateFromStaticBench | benchPushworldDto | 0   | 1000 | 5   | 1,817,624b | 235.848μs   | 241.131μs   | 239.282μs   | 249.452μs   | 4.878μs  | 2.02%  | 5.10x  |
| CompositeDtoCreateFromStaticBench | benchSpatieDto    | 0   | 1000 | 5   | 1,819,392b | 770.998μs   | 791.278μs   | 781.846μs   | 825.881μs   | 19.408μs | 2.45%  | 16.73x |
| CompositeDtoCreateFromStaticBench | benchJessengerDto | 0   | 1000 | 5   | 2,038,472b | 1,271.636μs | 1,297.250μs | 1,297.815μs | 1,324.512μs | 17.943μs | 1.38%  | 27.43x |
| CompositeDtoCreateFromStaticBench | benchCastDto      | 0   | 1000 | 5   | 1,817,608b | 582.042μs   | 588.277μs   | 585.578μs   | 597.356μs   | 5.640μs  | 0.96%  | 12.44x |

| CompositeDtoToArrayBench          | benchPushworldDto | 0   | 1000 | 5   | 2,159,176b | 77.260μs    | 80.439μs    | 81.864μs    | 82.848μs    | 2.155μs  | 2.68%  | 1.70x  |
| CompositeDtoToArrayBench          | benchSpatieDto    | 0   | 1000 | 5   | 2,170,784b | 499.391μs   | 514.750μs   | 517.551μs   | 530.119μs   | 10.906μs | 2.12%  | 10.89x |
| CompositeDtoToArrayBench          | benchJessengerDto | 0   | 1000 | 5   | 2,159,176b | 355.934μs   | 361.488μs   | 362.264μs   | 366.042μs   | 3.297μs  | 0.91%  | 7.64x  |
| CompositeDtoToArrayBench          | benchCastDto      | 0   | 1000 | 5   | 2,159,168b | 47.719μs    | 49.327μs    | 49.765μs    | 50.282μs    | 0.915μs  | 1.85%  | 1.04x  |

| DtoCreateBench                    | benchPushworldDto | 0   | 1000 | 5   | 1,817,592b | 113.811μs   | 115.436μs   | 114.786μs   | 118.301μs   | 1.533μs  | 1.33%  | 2.44x  |
| DtoCreateBench                    | benchSpatieDto    | 0   | 1000 | 5   | 1,817,576b | 352.823μs   | 363.898μs   | 366.375μs   | 370.764μs   | 6.325μs  | 1.74%  | 7.70x  |
| DtoCreateBench                    | benchJessengerDto | 0   | 1000 | 5   | 2,030,088b | 579.995μs   | 596.356μs   | 605.225μs   | 612.968μs   | 13.574μs | 2.28%  | 12.61x |
| DtoCreateBench                    | benchCastDto      | 0   | 1000 | 5   | 1,817,576b | 258.759μs   | 263.110μs   | 260.695μs   | 272.890μs   | 5.090μs  | 1.93%  | 5.56x  |

| DtoCreateFromStaticBench          | benchPushworldDto | 0   | 1000 | 5   | 1,817,608b | 128.617μs   | 130.258μs   | 129.600μs   | 132.178μs   | 1.314μs  | 1.01%  | 2.75x  |
| DtoCreateFromStaticBench          | benchSpatieDto    | 0   | 1000 | 5   | 1,817,592b | 369.513μs   | 379.794μs   | 376.796μs   | 395.002μs   | 8.385μs  | 2.21%  | 8.03x  |
| DtoCreateFromStaticBench          | benchJessengerDto | 0   | 1000 | 5   | 2,030,744b | 589.843μs   | 602.395μs   | 605.413μs   | 612.838μs   | 7.964μs  | 1.32%  | 12.74x |
| DtoCreateFromStaticBench          | benchCastDto      | 0   | 1000 | 5   | 1,817,592b | 266.649μs   | 274.010μs   | 272.662μs   | 283.349μs   | 5.762μs  | 2.10%  | 5.79x  |

| DtoToArrayBench                   | benchPushworldDto | 0   | 1000 | 5   | 2,133,936b | 45.658μs    | 47.285μs    | 46.862μs    | 49.602μs    | 1.492μs  | 3.16%  | 1.00x  |
| DtoToArrayBench                   | benchSpatieDto    | 0   | 1000 | 5   | 2,144,672b | 240.133μs   | 246.860μs   | 244.286μs   | 256.458μs   | 5.898μs  | 2.39%  | 5.22x  |
| DtoToArrayBench                   | benchJessengerDto | 0   | 1000 | 5   | 2,133,936b | 364.639μs   | 369.880μs   | 366.924μs   | 382.063μs   | 6.217μs  | 1.68%  | 7.82x  |
| DtoToArrayBench                   | benchCastDto      | 0   | 1000 | 5   | 2,133,928b | 49.134μs    | 50.241μs    | 50.670μs    | 51.512μs    | 0.930μs  | 1.85%  | 1.06x  |
+-----------------------------------+-------------------+-----+------+-----+------------+-------------+-------------+-------------+-------------+----------+--------+--------+

Alternative Methods Realizations

Function to get all properties and values as array:

$class = new ReflectionClass(static::class);

$properties = $class->getProperties(ReflectionProperty::IS_PUBLIC);

foreach ($properties as $property) {
    if ($property->isStatic()) {
        continue;
    }

    $data[$property->getName()] = $property->getValue($this);
}        

Spatie package is using this function, but it is slow.

Keywords

php

FAQs

Package last updated on 07 Oct 2021

Related posts