PHPackages                             venne/data-transfer - 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. venne/data-transfer

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

venne/data-transfer
===================

Data Transfer Object

090PHP

Since Nov 15Pushed 11y ago2 watchersCompare

[ Source](https://github.com/Venne/data-transfer)[ Packagist](https://packagist.org/packages/venne/data-transfer)[ RSS](/packages/venne-data-transfer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Venne:DataTransfer [![Build Status](https://camo.githubusercontent.com/608cd85daab5bc69fc4dcd591522f1feacce37151c9e58d2f256f9040795c536/68747470733a2f2f7365637572652e7472617669732d63692e6f72672f56656e6e652f646174612d7472616e736665722e706e67)](http://travis-ci.org/Venne/data-transfer)
============================================================================================================================================================================================================================================================================================

[](#vennedatatransfer-)

Use `data transfer object` pattern in templates.

**Benefits:**

- Simple read-only objects in templates.
- Cacheable objects and collections with all features from `Nette/Caching`.
- Serializable objects nad collections.
- It works right out of the box with `Kdyby/Doctrine`.

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

[](#installation)

The best way to install Venne/DataTransfer is using Composer:

```
composer require venne/data-transfer:@dev
```

Activation
----------

[](#activation)

```
extensions:
	dataTransfer: Venne\DataTransfer\DI\DataTransferExtension
```

### Configuration

[](#configuration)

```
dataTransfer:
	driver: Venne\Bridges\Kdyby\Doctrine\DataTransfer\EntityDriver
	cache:
		namespace: dataTransfer
```

Usage
-----

[](#usage)

### Define `DTO`

[](#define-dto)

```
/**
 * @property-read integer $id
 * @property-read string $name
 */
class ArticleDTO extends \Venne\DataTransfer\DataTransferObject {}
```

### Basic use

[](#basic-use)

```
$article = new ArticleDTO(array(
	'id' => 1,
	'name' => 'fooName',
));

// Lazy mode
$article = new ArticleDTO(function () {
	return array(
		'id' => 1,
		'name' => 'fooName',
	);
});

$article = unserialize(serialize($article)); // it works

echo $article->id;   // 1
echo $article->name; // fooName
echo $article->foo; // throw exception
```

### Iterator

[](#iterator)

```
$articles = DataTransferObjectIterator(ArticleDTO::class, array(
	array(
		'id' => 1,
		'name' => 'fooName',
	),
	array(
		'id' => 2,
		'name' => 'barName',
	),
));

// Lazy mode
$articles = DataTransferObjectIterator(ArticleDTO::class, function () {
	return array(
				array(
					'id' => 1,
					'name' => 'fooName',
				),
				array(
					'id' => 2,
					'name' => 'barName',
				),
	);
});

$articles = unserialize(serialize($articles)); // it works

echo count($articles);

foreach ($articles as $article) {
	echo $article->id;
	echo $article->name;
}
```

### `DataTransferManager`

[](#datatransfermanager)

```
$dataTransferManager = $container->getByType('Venne\DataTransfer\DataTransferManager');
// $dataTransferManager = new DataTransferManager($driver, $cacheStorage);
```

```
$article = $dataTransferManager
	->createQuery(ArticleDTO::class, function () {
		return $this->articleRepository->find($this->id);
	})
	->enableCache($key, $dependencies)
	->fetch();
```

```
$articles = $dataTransferManager
	->createQuery(ArticleDTO::class, function () {
		return $this->articleRepository->findBy(array(
			'parent' => $this->id,
		));
	})
	->enableCache($key, $dependencies)
	->fetchAll();
```

Cooperation with `kdyby/doctrine`
---------------------------------

[](#cooperation-with-kdybydoctrine)

### Installation

[](#installation-1)

```
extensions:
	...
	kdybyDataTransfer: Venne\Bridges\Kdyby\Doctrine\DataTransfer\DI\DataTransferExtension
```

### Usage

[](#usage-1)

```
$this->template->article = $dataTransferManager
	->createQuery(ArticleDTO::class, function () {
		return $this->articleRepository->find($this->id);
	})
	->enableCache($key, $dependencies)
	->fetch();
```

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/a173564fd150b9e9c8307ba7de2cf5588d0bcee71553f35d8946ff3abc4ce21e?d=identicon)[pepakriz](/maintainers/pepakriz)

---

Top Contributors

[![pepakriz](https://avatars.githubusercontent.com/u/383294?v=4)](https://github.com/pepakriz "pepakriz (13 commits)")

### Embed Badge

![Health badge](/badges/venne-data-transfer/health.svg)

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

###  Alternatives

[erlandmuchasaj/laravel-gzip

Gzip your responses.

40129.3k2](/packages/erlandmuchasaj-laravel-gzip)[mickgeek/yii2-actionbar

A control bar with bulk actions for the GridView widget.

3444.5k](/packages/mickgeek-yii2-actionbar)[miracuthbert/laravel-royalty

A user points package for Laravel that can be used to give rewards, loyalty or experience points with real time support

825.1k](/packages/miracuthbert-laravel-royalty)

PHPackages © 2026

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