zingle-com / dto
Simple DTOs
Installs: 4 955
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 0
Open Issues: 0
Requires
- php: >=7.2
- phootwork/collection: ^1.6
Requires (Dev)
- doctrine/common: ^2.11
- escapestudios/symfony2-coding-standard: ^3.9
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-11-20 09:39:13 UTC
README
Simple library for creating and serializing DTO trees.
Why?
Serializing objects to arrays to transmit then as other types of data is a pain. This library makes it easy to create objects that decorate objects and describe their serialization behavior. Resolver will then walk the tree serializing as it goes, so you end up with a plain array. Pass it along to whatever you'd like to serialize the format to at that point.
Example
use ZingleCom\DTO\Resolver; use ZingleCom\DTO\Transmittable; use Acme\SomeModel; // Imagine that SomeModel has exposed getters on properties we'd like to serialize class SomeModelDTO implements Transmittable { /** * @var SomeModel */ private $someModel; /** * @param SomeModel $someModel */ public function __construct(SomeModel $someModel) { $this->someModel = $someModel; } public function toArray(): array { return [ 'id' => $this->someModel->getId(), 'name' => $this->someModel->getName(), // imagine we have a related dto and model too 'relatedModel' => new RelatedModelDTO('id' => $this->someModel->getRelatedModel()), ]; } } // ... later you can do // imagine $someModel is instantiated somewhere else $resolver = new Resolver(); $data = $resolver->resolve(new SomeModelDTO($someModel)); // $data is now an array as described in DTOs, now we can serialize to whatever $json = json_encode($data); // JSON for instance
Contribute
Fork me and open a PR against master. We'll look at it.