PHPackages                             philipphermes/transfer-bundle - 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. philipphermes/transfer-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

philipphermes/transfer-bundle
=============================

generates transfers from xml

1.4.0(2mo ago)2142MITPHPPHP &gt;=8.3CI passing

Since Apr 14Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/philipphermes/transfer-bundle)[ Packagist](https://packagist.org/packages/philipphermes/transfer-bundle)[ RSS](/packages/philipphermes-transfer-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (20)Versions (21)Used By (0)

Transfer Bundle
===============

[](#transfer-bundle)

[![CI](https://github.com/philipphermes/transfer-bundle/actions/workflows/ci.yml/badge.svg)](https://github.com/philipphermes/transfer-bundle/actions/workflows/ci.yml)[![PHP](https://camo.githubusercontent.com/9c50dc780fa576f5c39b4feff00c05345c1471be0808881a09e750b91220dc54/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344253230382e332d3838393242462e737667)](https://php.net)[![Symfony](https://camo.githubusercontent.com/83755319468ce3a2da168fd9b106b0653015b7dd2a73aab726a053db26c850df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d253345253344253230372e342d3838393242462e737667)](https://symfony.com)

A Symfony bundle for generating type-safe transfer objects (DTOs) from XML schema definitions. Supports OpenAPI attribute generation for API documentation.

---

Table of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Configuration](#configuration)
- [Usage](#usage)
    - [Defining Transfers](#defining-transfers)
    - [Property Attributes](#property-attributes)
    - [Generating Transfers](#generating-transfers)
- [OpenAPI Integration](#openapi-integration)
- [Development](#development)

---

Installation
------------

[](#installation)

```
composer require philipphermes/transfer-bundle
```

Register the bundle in `config/bundles.php`:

```
return [
    // ...
    PhilippHermes\TransferBundle\PhilippHermesTransferBundle::class => ['all' => true],
];
```

---

Configuration
-------------

[](#configuration)

Create `config/packages/transfer.yaml` to customize the bundle:

```
transfer:
    schema_dirs:
        - '%kernel.project_dir%/transfers'
    exclude_dirs: []
    output_dir: '%kernel.project_dir%/src/Generated/Transfers'
    namespace: 'App\Generated\Transfers'
```

### Configuration Options

[](#configuration-options)

OptionDefaultDescription`schema_dirs``['%kernel.project_dir%/transfers']`Directories to scan for XML schema files (supports glob patterns)`exclude_dirs``[]`Directories to exclude from scanning`output_dir``%kernel.project_dir%/src/Generated/Transfers`Output directory for generated transfer classes`namespace``App\Generated\Transfers`PHP namespace for generated classes### Vendor-Level Discovery

[](#vendor-level-discovery)

To include transfers from vendor packages:

```
transfer:
    schema_dirs:
        - '%kernel.project_dir%/transfers'
        - '%kernel.project_dir%/vendor/*/*/transfers'
    exclude_dirs:
        - '%kernel.project_dir%/vendor/*/tests'
        - '%kernel.project_dir%/vendor/*/*/tests'
```

---

Usage
-----

[](#usage)

### Defining Transfers

[](#defining-transfers)

Create XML schema files in your configured schema directories (default: `transfers/`).

```

```

**Key features:**

- Multiple XML files are supported and will be merged
- Transfers with the same name across files are combined
- First definition of a property takes precedence

### Property Attributes

[](#property-attributes)

AttributeRequiredDescription`name`YesProperty name`type`YesPHP type (`string`, `int`, `bool`, `float`, `array`, `Transfer`, `Transfer[]`)`description`NoProperty description (used in OpenAPI docs)`singular`NoSingular name for array properties (enables `addX()` method)`isNullable`NoWhether the property can be null (`true`/`false`)### Generating Transfers

[](#generating-transfers)

Run the generator command:

```
php bin/console transfer:generate
```

Options:

- `--clean-disable` - Skip cleaning the output directory before generation

---

OpenAPI Integration
-------------------

[](#openapi-integration)

Add `api="true"` to transfers to automatically generate OpenAPI attributes.

### Transfer Attributes

[](#transfer-attributes)

AttributeRequiredDescription`name`YesTransfer name (generates `{name}Transfer` class)`api`NoSet to `true` to generate OpenAPI attributes`apiAlias`NoCustom name for OpenAPI documentation (default: transfer name without "Transfer" suffix)### Example

[](#example)

```

```

Use in your controllers with NelmioApiDocBundle:

```
use App\Generated\Transfers\UserTransfer;
use App\Generated\Transfers\ErrorTransfer;
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Attributes as OA;

class UserApiController extends AbstractController
{
    #[OA\Tag(name: 'user')]
    #[OA\Response(
        response: 200,
        description: 'Returns a user by id',
        content: new Model(type: UserTransfer::class)
    )]
    #[OA\Response(
        response: 404,
        description: 'User not found',
        content: new Model(type: ErrorTransfer::class)
    )]
    #[Route('/api/user/{id}', methods: ['GET'])]
    public function getUserById(int $id): Response
    {
        // ...
    }
}
```

Note

Child transfers do not inherit `api="true"` - you must set it explicitly on each transfer.

---

Development
-----------

[](#development)

### Static Analysis

[](#static-analysis)

```
vendor/bin/phpstan analyse --memory-limit=1G
```

### Testing

[](#testing)

```
vendor/bin/phpunit
```

With coverage report:

```
XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-html coverage-report
```

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance87

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 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

Every ~22 days

Total

16

Last Release

67d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/253a28dc66b7eb3f0a8734bc0a59eb6eaaa28c0bcd28cf4a00d061aea76da2f7?d=identicon)[philipphermes](/maintainers/philipphermes)

---

Top Contributors

[![philipphermes](https://avatars.githubusercontent.com/u/89180745?v=4)](https://github.com/philipphermes "philipphermes (61 commits)")

---

Tags

data-transfer-objectdtogeneratorsymfonysymfony-bundletransfergeneratordtotransfer

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/philipphermes-transfer-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/philipphermes-transfer-bundle/health.svg)](https://phpackages.com/packages/philipphermes-transfer-bundle)
```

###  Alternatives

[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M568](/packages/symfony-maker-bundle)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)

PHPackages © 2026

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