anteris-dev/faker-map

根据传递的名称猜测你可能需要的Faker提供者方法。

v2.0.0 2021-04-16 21:06 UTC

This package is auto-updated.

Last update: 2024-09-21 03:10:18 UTC


README

Tests Style

你是否曾经想要Faker自动为你创建一些值,而不必告诉它它们代表什么?是的,可能不是,但至少你现在知道这是可能的!

此包允许你通过执行如下操作来动态查找你可能正在寻找的方法:FakerMap::new()->closest('male name')->fake()

如何安装?如何工作?让我们深入了解!

安装

运行composer require anteris-dev/faker-map

入门指南

use Anteris\FakerMap\FakerMap;
use Faker\Factory;

// FakerMap will handle creating a faker instance for you here.
$map = FakerMap::new();

// Or you can pass in your own instance. This is handy for seeding!
$faker = Factory::create();
$faker->seed(123);

$map = new FakerMap($faker);

FakerMap类包含三个有用的方法,用于动态确定应生成什么值。第一个方法是closeEnough()。此方法接受一个字符串,并找到第一个可能与它匹配的Faker方法。

第二个方法是closest()。这也接受一个字符串,但它试图找到与你要查找的Faker值最接近的匹配项。

最后,guess()方法允许你确定匹配有多接近或有多远。它的第一个参数是查询,第二个参数是整数,定义了在你的查询中可以更改多少个字母以使匹配。

这些方法中的每一个都返回一个Anteris\FakerMap\FakerMap实例,它提供了各种可以调用的附加方法,以帮助您找到完美的方法。这些方法是:

  • default($value) - 允许你在找不到适当方法的情况下定义一个默认值。
  • type(string $type) - 允许你定义返回值的类型。如果伪造的值与类型不匹配,则返回null或默认值。
  • fake(...$parameters) - 接收所有收集到的信息,并返回最终结果。传递的任何参数都将用于faker方法。
  • faker() - 返回任何你可能需要的底层faker实例。

以下是一些示例

FakerMap::new()->closeEnough('female name')->fake();

FakerMap::new()->closest('female name')->fake();

FakerMap::new()->guess('female name', 3)->fake();

// A guess that passes some parameters
// Returns: A number between 1 and 40
FakerMap::new()->closest('number between')->fake(1, 40);

// A guess that definitely won't have a match so it defaults to "Yikes!"
FakerMap::new()->closest('some unknown value')->default('Yikes!')->fake();

// Passes on to the underlying faker instance.
FakerMap::new()->faker()->firstNameFemale();

但是,为什么?

我们为什么要创建这个包?因为我们想要能够根据使用PHP反射API检索到的属性名称伪造现实值。这将允许我们填充以下类中的现实数据。很酷,不是吗?

class Person {
	public string $firstName;
	public string $lastName;
	public string $companyName;
	public string $email;
	public string $address1;
	public string $address2;
	public string $socialSecurityNumber;
}

参考

有一些很酷的包使用Faker做一些很酷的事情。虽然它没有满足我们的需求,但Jason McCreary创建了一个很好的Faker Registry包,它为生成Laravel Factory文件做了一些类似的事情。也许值得在这里看看这里。他的注册数组启发了我们的FakerDictionary类。