定制 picamator/transfer-object 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

picamator/transfer-object

最新稳定版本:5.6.0

Composer 安装命令:

composer require picamator/transfer-object

包简介

A modern Symfony-compatible Transfer Object Generator with property hooks, FixedArray, and asymmetric visibilities.

README 文档

README

Transfer Object Generator

CI workflow License OpenSSF Best Practices PHP Version Require Symfony Compatibility Wiki Latest Stable Version

Transfer Object Generator

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 console command:

$ ./vendor/bin/transfer-generate [-c|--configuration CONFIGURATION]

Builds the transfer object:

$customerTransfer = new CustomerTransfer();
$customerTransfer->firstName = 'Jan';
$customerTransfer->lastName = 'Kowalski';

Key Features

Symfony Compatibility:

Transfer Object:

  • Offers methods:
    • fromArray()
    • toArray()
  • 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.

Installation

Composer installation:

The Transfer Object Generator is available on Packagist and can be installed using Composer:

$ composer require picamator/transfer-object
Version PHP Symfony
≤ 4.0.0 8.4 7.3
≥ 5.0.0 8.5 8.0

Directory Structure:

After installation, the following directory structure is recommended:

  • src/Generated: transfer objects directory
  • src/config/generator.config.yml: generator's configuration file
  • src/config/definition/*.transfer.yml: transfer objects definition files, where each of them groups transfer objects definitions by business domain, e.g. payment.transfer.yml, sales.transfer.yml, etc.

With this setup, generator.config.yml looks like:

# $schema: ./../vendor/picamator/transfer-object/schema/config.schema.json
generator:
    transferNamespace: "YourVendorNamespace\\YourProjectNamespace\\Generated"
    transferPath: "${PROJECT_ROOT}/src/Generated"
    definitionPath: "${PROJECT_ROOT}/config/definition"

Where YourVendorNamespace\\YourProjectNamespace should be replaced with your vendor and project namespace.

Additionally, .gitignore should contain:

# transfer objects
src/Generated/_tmp
src/Generated/transfer.lock

Then, running command generates transfer objects:

$ ./vendor/bin/transfer-generate -c config/generator.config.yml

Tip

For large projects, each module can have its own generator configuration. Please use bulk command to generate transfer objects for the multi-configuration setup.

Documentation

Publications

  1. Sergii Pryz, "Data Transfer Objects and Property Hooks" PHP Architect Magazine, June 2025

Acknowledgment

Many thanks ❤️ for your contribution, support, feedback and simply using the Transfer Object Generator!

Contribution

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.

Security Commitment

The project applies OpenSSF Best Practices.

For reporting security vulnerabilities, please follow Security Policy.

License

Transfer Object Generator is free and open-source software licensed under the MIT License.

For more details, please see the LICENSE file.

统计信息

  • 总下载量: 66
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 22
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 21
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-12-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固