wenbinye/faker-template

dev-master 2020-10-17 02:37 UTC

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() 创建唯一的值