anteris-dev / faker-map
根据传递的名称猜测你可能需要的Faker提供者方法。
v2.0.0
2021-04-16 21:06 UTC
Requires
- php: ^8.0
- fakerphp/faker: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.0
README
你是否曾经想要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
类。