PHPackages                             esit/fakertoolbox - 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. esit/fakertoolbox

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

esit/fakertoolbox
=================

Bei dieser Software handelt es sich um eine Erweiterung für das Open Source CMS Contao, die es erlaubt direkt im DCAdie Definition für Testdaten zu hinterlegen.

1.3.0(4y ago)291LGPL-3.0-or-laterPHPPHP ^7.2||^8.0

Since May 25Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/eS-IT/fakertoolbox)[ Packagist](https://packagist.org/packages/esit/fakertoolbox)[ RSS](/packages/esit-fakertoolbox/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (6)Versions (13)Used By (0)

Fakertoolbox \[DEPRECATED\]
===========================

[](#fakertoolbox-deprecated)

Beschreibung
------------

[](#beschreibung)

Bei dieser Software handelt es sich um eine Erweiterung für das Open Source CMS Contao, die es erlaubt direkt im DCA die Definition für Testdaten zu hinterlegen und dann mit einfachen Aufrufen per [Faker](https://github.com/fzaninotto/Faker)Testdaten für einzelne Felder oder ganze Tabellenzeilen erstellen zu lassen.

Lizenz
------

[](#lizenz)

Distributed under the [LGPLv3](https://spdx.org/licenses/GPL-3.0-or-later.html#licenseText) license. See `LICENSE` for more information.

Autor
-----

[](#autor)

**e@sy Solutions IT:** Patrick Froch

Support
-------

[](#support)

Voraussetzungen
---------------

[](#voraussetzungen)

- php: &gt;=7.2
- contao/core-bundle: &gt;=4.4

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

[](#installation)

Die Installation ist einfach über den Contao Manager möglich, dort nach `esit/fakertoolbox` suchen und installieren.

Einrichtung
-----------

[](#einrichtung)

Im DCA gibt es vier Einträge, die in das `eval`-Array eingefügt werden können:

### `fakerMethod`

[](#fakermethod)

`fakerMethod` gibt die Methode an, die Faker für die Erstellung der Testdaten für dieses Feld verwenden soll. Es stehen alle Methoden zur Verfügung die Faker bietet. Eine Übersicht findet man unter:

**Beispiel:**

```
$GLOBALS['TL_DCA']['tl_member']['fields']['firstname']['eval']['fakerMethod'] = 'firstName';
```

Es wird ein Vornamen erstellt, wenn ein Testwert für das Feld `tl_member.firstname` angefragt wird.

### `fakerParameter`

[](#fakerparameter)

Mit `fakerParameter` kann man Parameter für die Erstellungsmethode definieren, so kann man z.B. den Zahlenbereich eingrenzen.

**Beispiel:**

```
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerMethod']      = 'numberBetween';
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerParameter']   = [1, 9999];
```

Dies gibt eine Zahl zwischen 1 und 9999 zurück, wenn ein Testwert für das Feld `tl_member.id` erstellt werden soll.

### `fakerOptional`

[](#fakeroptional)

Mit `fakerOptional` kann die Wahrscheinlichkeit angegeben werden, mit der ein Wert erzeugt und was sonst als Vorgabewert zurückgegeben wird.

**Beispiel:**

```
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerMethod']      = 'firstName';
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerOptional']    = [0.6, ''];
```

Gibt mit einer Wahrscheinlichkeit von 60% einen Vornamen und sonst einen Leerstring zurück.

### `fakerUnique`

[](#fakerunique)

Ist `fakerUnique` auf true gesetzt, werden immer unterschiedliche Werte zurückgegeben. Ist dies nicht möglich, weil z.B. der Vorrat an zur Verfügung stehenden Elementen erschöpft ist, wird ein Fehler erzeugt (s. [Modifiers](https://github.com/fzaninotto/Faker#modifiers)).

**Beispiel:**

```
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerMethod']      = 'numberBetween';
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerParameter']   = [1, 3];
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerUnique']      = true;
```

Bei dieser Konfiguration würde ein Fehler erzeugt, wenn keine neue Zahlen zwischen 1 und 3 mehr zurückgegeben werden können (also beim 4. Aufruf).

### `fakerSerial`

[](#fakerserial)

Mit der Einstellung `fakerSerial` können serialisierte Daten erstellt werden. Da Contao Mehrfachbeziehungen auf diese Weise abbildet, ist dies in Test häufig anzutreffen. Die Einstellung muss ein Array mit zwei Zahlen enthalten. Die erste gibt die Mindestanzahl an Daten an, die erzeugt werden sollen, die zweite die Maximalzahl. Sollen auch leere Datensätze erzeugt werden, wird als leerer Datensatz ein Leerstings und nicht `a:0:{}` zurückgegeben, da dies auch das Vorgehen von Contao ist.

**Beispiel:**

```
$GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['fakerMethod']      = 'numberBetween';
$GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['fakerParameter']   = [1, 10];
$GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['fakerSerial']      = [1,5]; // Anzahl der serialisierten Datensätze: [min., max.]
```

In diesem Beispiel werden für jeden Eintrag 1 - 5 Zahlen erstellt und als serialisiertes Array zurückgegeben. Diese könnten z.B. den Ids der Mitgliedergruppen entsprechen.

**Wichtig** ist hier, dass nicht 0 bis 5 eingegeben werden sollte, da sonst relativ viele leere Datensätze erzeugt werden. Es würde zwar funktionieren, lässt sich aber über `fakerOptional` viel besser konfigurieren.

Verwendung
----------

[](#verwendung)

### Fabrik für die Erstellung

[](#fabrik-für-die-erstellung)

Hat man die Einstellungen im DCA hinterlegt, kann man einfach die Testwerte erzeugen. Zunächst holt man sich die Fabrik.

```
$factory = \Contao\System::getContainer()->get('esit_fakertoolbox.services.factories.fakerfactory');
```

Alternativ kann man den Service auch einfach per Dependency Injection beziehen.

### ContaoFaker

[](#contaofaker)

Nun kann man sich den eigentlichen `ContaoFaker` geben lassen, in dem man die gewünschte Tabelle übergibt. Hierbei handelt es sich um eine Fassade, die das Sammeln der nötigen Informationen, sowie die Logik für die eigentliche Erstellung kapselt und der einfacheren Benutzung dient.

```
$faker = $factory->getFaker('tl_member');
```

### Testwerte

[](#testwerte)

Für den Zugriff auf die Testwerte gibt es drei Wege. Man kann sich einzelne Werte geben lassen, in dem man einfach auf die Eigenschaft zugreift. Wichtig ist, dass nur auf Felder zugegriffen werden kann, für die eine `fakerMethod`definiert ist. Wird auf ein Feld zugegriffen, bei dem dies nicht der Fall ist, wird ein Fehler erzeugt.

**Beispiel:**

```
$id = $faker->id;
```

Man kann sich eine ganze Tabellenzeile geben lassen. Wichtig ist, dass nur für die Felder Werte erzeugt werden, bei denen eine `fakerMethod` definiert ist, die anderen Felder werden ignoriert.

**Beispiel:**

```
$row = $faker->getRow();
```

Zu guter Letzt, kann man sich eine beliebige Anzahl an Tabellenzeilen geben lassen, z.B um eine Testdatenbank zu befüllen. Es wird einfach die gewünschte Anzahl übergeben. Auch hier werden nur Testdaten für Felder erstellt, bei denen eine `fakerMethod` definiert ist.

**Beispiel:**

```
$rows = $faker->getRows(5);
```

Eigene Provider
---------------

[](#eigene-provider)

Eigene Provider können einfach über die Fassade registriert werden. So können spezielle Daten erzeugt werden (s. [Faker Internals: Understanding Providers](https://github.com/fzaninotto/Faker#faker-internals-understanding-providers)).

```
$factory    = \Contao\System::getContainer()->get('esit_fakertoolbox.services.factories.fakerfactory');
$faker      = $factory->getFaker('tl_member');
$faker->addProvider(\Esit\Fakertoolbox\Classes\Provider\Internet::class);
```

`\Esit\Fakertoolbox\Classes\Provider\Internet::class` muss durch den eigenen Provider ersetzt werden.

Mitgelieferte Provider
----------------------

[](#mitgelieferte-provider)

Zusätzlich zu den Providern, die Faker bietet, werden spezielle Provider für Contao bereitgestellt.

### `internetAddress`

[](#internetaddress)

Der Provider liefert eine Internetadresse mit Protokoll zurück (z.B. `https://www.example.org/`). In 80 % der Aufrufe wird die Adresse mit `www` erstellt. Die zu verwendenden Protokolle (z.B. `https://` oder `http://`) können angegeben werden. Da die Protokolle `https://` und `http://` Standard sind, müssen sie nicht angegeben werden, in diesem Fall kann der Eintrag entfallen.

**Beispiel:**

```
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerMethod']     = 'internetAddress';
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerParameter']  = [['https://', 'http://']]; // kann entfallen, da diese Protokolle der Standardfall sind.
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerOptional']   = [0.9, '']; // 10% chance of getting emtpy string
```

Komplettbeispiel
----------------

[](#komplettbeispiel)

### Erweiterung des DCAs

[](#erweiterung-des-dcas)

In diesem Beispiel wird das DCA der Tabelle `tl_member` um ein paar Testdaten erweitert.

```
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerMethod']               = 'numberBetween';
$GLOBALS['TL_DCA']['tl_member']['fields']['id']['eval']['fakerParameter']            = [1, 9999];
$GLOBALS['TL_DCA']['tl_member']['fields']['tstamp']['eval']['fakerMethod']           = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['firstname']['eval']['fakerMethod']        = 'firstName';
$GLOBALS['TL_DCA']['tl_member']['fields']['lastname']['eval']['fakerMethod']         = 'lastName';
$GLOBALS['TL_DCA']['tl_member']['fields']['dateOfBirth']['eval']['fakerMethod']      = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['fakerMethod']          = 'company';
$GLOBALS['TL_DCA']['tl_member']['fields']['street']['eval']['fakerMethod']           = 'streetAddress';
$GLOBALS['TL_DCA']['tl_member']['fields']['postal']['eval']['fakerMethod']           = 'postcode';
$GLOBALS['TL_DCA']['tl_member']['fields']['city']['eval']['fakerMethod']             = 'city';
$GLOBALS['TL_DCA']['tl_member']['fields']['state']['eval']['fakerMethod']            = 'state';
$GLOBALS['TL_DCA']['tl_member']['fields']['country']['eval']['fakerMethod']          = 'country';
$GLOBALS['TL_DCA']['tl_member']['fields']['phone']['eval']['fakerMethod']            = 'phoneNumber';
$GLOBALS['TL_DCA']['tl_member']['fields']['mobile']['eval']['fakerMethod']           = 'phoneNumber';
$GLOBALS['TL_DCA']['tl_member']['fields']['mobile']['eval']['fakerOptional']         = [0.4, ''];
$GLOBALS['TL_DCA']['tl_member']['fields']['fax']['eval']['fakerMethod']              = 'phoneNumber';
$GLOBALS['TL_DCA']['tl_member']['fields']['fax']['eval']['fakerOptional']            = [0.2, ''];
$GLOBALS['TL_DCA']['tl_member']['fields']['email']['eval']['fakerMethod']            = 'email';
$GLOBALS['TL_DCA']['tl_member']['fields']['language']['eval']['fakerMethod']         = 'languageCode';
$GLOBALS['TL_DCA']['tl_member']['fields']['login']['eval']['fakerMethod']            = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['username']['eval']['fakerMethod']         = 'userName';
$GLOBALS['TL_DCA']['tl_member']['fields']['disable']['eval']['fakerMethod']          = 'boolean';
$GLOBALS['TL_DCA']['tl_member']['fields']['disable']['eval']['fakerParameter']       = [80]; // chance of getting true
$GLOBALS['TL_DCA']['tl_member']['fields']['start']['eval']['fakerMethod']            = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['stop']['eval']['fakerMethod']             = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['dateAdded']['eval']['fakerMethod']        = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['lastLogin']['eval']['fakerMethod']        = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['currentLogin']['eval']['fakerMethod']     = 'unixTime';
$GLOBALS['TL_DCA']['tl_member']['fields']['loginAttempts']['eval']['fakerMethod']    = 'numberBetween';
$GLOBALS['TL_DCA']['tl_member']['fields']['loginAttempts']['eval']['fakerParameter'] = [0, 3];
$GLOBALS['TL_DCA']['tl_member']['fields']['loginAttempts']['eval']['fakerOptional']  = [0.9, 0]; // 10% chance of 0
$GLOBALS['TL_DCA']['tl_member']['fields']['locked']['eval']['fakerMethod']           = 'unixTime';

// serialisierte Daten
$GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['fakerMethod']           = 'numberBetween';
$GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['fakerParameter']        = [1, 10];
$GLOBALS['TL_DCA']['tl_member']['fields']['groups']['eval']['fakerSerial']           = [1,5]; // Anzahl der serialisierten Datensätze: [min., max.]

// internetAddressProvider
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerMethod']          = 'internetAddress';
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerParameter']       = [['https://', 'http://']];
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerOptional']        = [0.9, '']; // 10% chance of getting emtpy string
$GLOBALS['TL_DCA']['tl_member']['fields']['website']['eval']['fakerSerial']          = [1,5];
```

### Erstellen von 50 Datensätzen

[](#erstellen-von-50-datensätzen)

```
$factory    = \Contao\System::getContainer()->get('esit_fakertoolbox.services.factories.fakerfactory');
$faker      = $factory->getFaker('tl_member');
$testData   = $faker->getRows(50);
```

Running the tests
-----------------

[](#running-the-tests)

Im Verzeichnis der Erweiterung folgenden Befehl aufrufen:

```
build/runtests.sh
```

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance56

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 95.7% 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 ~62 days

Recently: every ~139 days

Total

10

Last Release

1615d ago

PHP version history (2 changes)1.0.0PHP ^7.2

1.3.0PHP ^7.2||^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/11d693bb4abc8287c3a3b558873e80f65e2b8a7fcdfd10f87e578a11ff97173c?d=identicon)[eS-IT](/maintainers/eS-IT)

---

Top Contributors

[![eS-IT](https://avatars.githubusercontent.com/u/1199106?v=4)](https://github.com/eS-IT "eS-IT (22 commits)")[![zonky2](https://avatars.githubusercontent.com/u/1045318?v=4)](https://github.com/zonky2 "zonky2 (1 commits)")

---

Tags

deprecatedobsolete

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/esit-fakertoolbox/health.svg)

```
[![Health](https://phpackages.com/badges/esit-fakertoolbox/health.svg)](https://phpackages.com/packages/esit-fakertoolbox)
```

###  Alternatives

[plenta/contao-jobs-basic-bundle

Basic Job Manager for Contao (including Google Jobs).

335.1k](/packages/plenta-contao-jobs-basic-bundle)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)[inspiredminds/contao-wowjs

Integrates WOW.js for Contao content elements and form fields.

1813.0k](/packages/inspiredminds-contao-wowjs)

PHPackages © 2026

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