Would you like to build Symfony-compatible Transfer Objects?
You're in the right place! 🎉
Imagine you have a Rest API response:
{
"firstName": "Jan",
"lastName": "Kowalski"
}
Running the following interactive console command:
$ ./vendor/bin/definition-generate
Generates a YML
definition file:
Customer:
firstName:
type: string
lastName:
type: string
Then, running another console command:
$ ./vendor/bin/transfer-generate [-c|--configuration CONFIGURATION]
Builds the Transfer Object:
$customerTransfer = new CustomerTransfer();
$customerTransfer->firstName = 'Jan';
$customerTransfer->lastName = 'Kowalski';
Symfony Compatability:
- Provides Symfony console command:
- Includes Symfony services:
- Enables Symfony request data mapping.
Transfer Object:
- Offers methods:
fromArray()
toArray()
toFilterArray()
- Implements standard interfaces:
IteratorAggregate
JsonSerializable
Countable
- Handles embedded and collection Transfer Objects.
- Works with PHP primitive data types.
- Extends compatibility to advanced types:
BackedEnum
DateTime
DateTimeImmutable
BcMath\Number
- Supports asymmetric property visibility.
- Integrates with external Transfer Objects.
Composer installation:
$ composer require picamator/transfer-object
Definition Files and Transfer Object generators have been tested against the following APIs:
- NASA Open Api
- OpenWeather
- Content API for Shopping
- Frankfurter is a free, open-source currency data API
- Tagesschau API
- Rest API response is used as a blueprint to generate Definition Files
- Transfer Objects are generated based on Definition Files
- Transfer Object instance is created with the API response
- Transfer Object is converted back to the array
- The converted array is compared with the API response
For all APIs, data are ✅ matched.
For detailed information, please check DefinitionGeneratorFacadeTest.
For more details, please visit project's wiki.
Many thanks ❤️ for your contribution, support, feedback and simply using the Transfer Object Generator!
If you find this project useful, please ⭐ star the repository. Follow the project to stay updated with all activities.
If you have suggestions for improvements or new features, feel free to:
- Create an issue
- Submit a pull request
Here is a Contribution Guide.
This project is released with a Code of Conduct. By participating in this project and its community, you agree to abide by those terms.
Transfer Object Generator is free and open-source software licensed under the MIT License.
For more details, please see the LICENSE file.