wenbinye / faker-template
Requires
- php: ^7.1
- ext-json: *
- fzaninotto/faker: ^1.8
- gburtini/distributions: ^0.0.2
- symfony/console: ^3.4||^4.0||^5.0
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2024-12-17 11:42:00 UTC
README
Quick start
composer install
cd examples
../bin/faker-template owner
../bin/faker-template owner -r 10 -o result/owner.json
../bin/faker-template pet_type -r inf -o result/pet_type.json
../bin/faker-template pet -r 10 -o result/pet.json
../bin/faker-template visit -r 10 -o result/visit.json
Template
Template is a simple php file that return an array :
<?php return [ 'id' => ['incrementId'], 'first_name' => ['firstName'], 'last_name' => ['lastName'], 'city' => ['city'], 'telephone' => ['phoneNumber'] ];
The template is equal as:
$faker = \Faker\Factory::create(); return [ 'id' => $faker->incrementId(), 'first_name' => $faker->firstName(), 'last_name' => $faker->lastName(), 'city' => $faker->city(), 'telephone' => $faker->phoneNumber() ];
Note all key starts with _
will be discard when output. You can use key starts with _
to store temporal data to facilitate data faker-templateeration.
Template value type can be one of:
array
When template is an array, it interpret as ['method', 'arg1', 'arg2', ...]
。
Same as :
call_user_func_array([$faker, 'method'], ['arg1', 'arg2', ...]);
string
When template is an string, first it split the string using .
.
if first part of the string is an entry of current result, then get the entry of result.
if first part of the string is not present in current result, then use $faker->pickup($name)
random pickup one from the dataset.
The rest part of the string use as the index for the entry.
For example: pet_type
will random choose one from pet_type.json
.
iterator
When template is an iterator, it will get the next value of the iterator.
For example:
<?php return [ 'type' => new ArrayIterator(['a', 'b']) ];
This will generator two rows:
[ {"type":"a"}, {"type":"b"} ]
Note the \Generator
is also an iterator, so this is same as previous one:
<?php return [ 'type' => function() { foreach (['a', 'b'] as $type) { yield $type; } } ];
closure
When the template is an closure, the call result of the closure will be used. if the call result is an iterator, the iterator value will use instead.
For example:
<?php return [ 'type' => function($faker) { return ['a', 'b']; } ];
The will generate :
[ {"type": ["a", "b"]} ]
But:
<?php return [ 'type' => function($faker) { return new ArrayIterator(['a', 'b']); } ];
It generates:
[ {"type":"a"}, {"type":"b"} ]
Config
You can create a file .faker-config
in current directory or home directory. The config file is in json format which contains:
- locale the locale for faker generator
- template the template directory
- dataset the data set directory
- options additional command line options
generators
incrementId($name = 'default', $start = 1) // 1, 2, 3, ... pickup($dataSetName) dataset($dataSetName)
Tips
- use
$faker->optional()
to create nullable value - use
$faker->unique()
to create unique value