wenbinye / faker-template
dev-master
2020-10-17 02:37 UTC
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-09-17 11:12:10 UTC
README
快速开始
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
模板
模板是一个简单的PHP文件,它返回一个数组
<?php return [ 'id' => ['incrementId'], 'first_name' => ['firstName'], 'last_name' => ['lastName'], 'city' => ['city'], 'telephone' => ['phoneNumber'] ];
模板等于
$faker = \Faker\Factory::create(); return [ 'id' => $faker->incrementId(), 'first_name' => $faker->firstName(), 'last_name' => $faker->lastName(), 'city' => $faker->city(), 'telephone' => $faker->phoneNumber() ];
注意所有以 _
开头的键在输出时将被丢弃。您可以使用以 _
开头的键来存储临时数据,以简化数据faker模板化。
模板值类型可以是以下之一
数组
当模板是数组时,它解释为 ['method', 'arg1', 'arg2', ...]
。
相同于
call_user_func_array([$faker, 'method'], ['arg1', 'arg2', ...]);
字符串
当模板是字符串时,首先使用 .
分割字符串。
如果字符串的第一部分是当前结果的条目,则获取结果的条目。
如果字符串的第一部分当前结果中不存在,则使用 $faker->pickup($name)
从数据集中随机选择一个。
字符串的其余部分用作条目的索引。
例如: pet_type
将从 pet_type.json
中随机选择一个。
迭代器
当模板是迭代器时,它将获取迭代器的下一个值。
例如
<?php return [ 'type' => new ArrayIterator(['a', 'b']) ];
这将生成两行
[ {"type":"a"}, {"type":"b"} ]
注意 \Generator
也是一个迭代器,所以这与前面的相同
<?php return [ 'type' => function() { foreach (['a', 'b'] as $type) { yield $type; } } ];
闭包
当模板是闭包时,将使用闭包的调用结果。如果调用结果是迭代器,则使用迭代器值。
例如
<?php return [ 'type' => function($faker) { return ['a', 'b']; } ];
这将生成
[ {"type": ["a", "b"]} ]
但是
<?php return [ 'type' => function($faker) { return new ArrayIterator(['a', 'b']); } ];
它生成
[ {"type":"a"}, {"type":"b"} ]
配置
您可以在当前目录或主目录中创建一个名为 .faker-config
的文件。配置文件是JSON格式,包含以下内容
- locale - faker生成器的区域设置
- template - 模板目录
- dataset - 数据集目录
- options - 额外的命令行选项
generators
incrementId($name = 'default', $start = 1) // 1, 2, 3, ... pickup($dataSetName) dataset($dataSetName)
提示
- 使用
$faker->optional()
创建可以为空的值 - 使用
$faker->unique()
创建唯一的值