lil-pecky / random-person-generator
Requires
- php: ^8.1
Requires (Dev)
- pestphp/pest: ^2.3
This package is auto-updated.
Last update: 2024-09-04 16:30:07 UTC
README
此软件包允许您生成具有随机姓名、生日和出生国家的个人。出生国家可以是完全随机的,也可以基于提供的语言。
此软件包是为了满足一个非常具体的用例而开发的,但由于随机姓名列表对许多项目都很有用,所以我决定发布它。
此软件包深受 FakerPHP 的启发/影响。
入门
安装
此软件包需要 PHP >= 8.1。
composer require lil-pecky/random-person-generator
使用
有两种方式可以实例化一个 Generator 实例;
向工厂提供特定的区域设置
use LilPecky\RandomPersonGenerator\Factory; use LilPecky\RandomPersonGenerator\Locale; // the provided locale is required $locale = Locale::create('nl_NL'); $generator = Factory::create($locale);
随机区域设置,提供可选的语言
use LilPecky\RandomPersonGenerator\Factory; // generator for a completely random locale (en_GB, fr_FR, pt_BR, ...) $generator = Factory::createWithRandomLocale(); // generator for a random locale within a specific language (nl_BE or nl_NL) $generator = Factory::createWithRandomLocale('nl');
在两种情况下,提供的语言必须在
LilPecky\RandomPersonGenerator\Languages::LANGUAGES
数组中,如果提供了无效的语言,将抛出异常。
生成一个或多个个人
$locale = Locale::create('nl_NL'); $generator = Factory::create($locale); $amount = new Amount(10); $startDate = '2013-01-01'; $endDate = '2023-01-01'; $gender = Gender::FEMALE; // generates a single Dutch person, with a male given name and date of birth between $startDate and $endDate $person = $generator->person($startDate, $endDate, $gender); // generates 10 Dutch people, each with a male given name and date of birth between $startDate and $endDate $people = $generator->people($amount, $startDate, $endDate, $generator); $people = $generator->persons($amount, $startDate, $endDate, $generator);
可用方法
由于此软件包主要编写来满足一个非常具体的用例,因此可用的方法数量有限;
require_once 'vendor/autoload.php'; $locale = Locale::create('nl_NL'); $generator = Factory::create($locale); // generates a random date between two bounds. // if no start date is provided, it defaults to now - 30 years. Can also be a DateTimeImmutable object // if no end date is provided, it defaults to now. Can also be a DateTimeImmutable object $generator->dateBetween('2013-01-01', '2023-01-01'); // generates a random male Dutch given name // if no gender is provided, it defaults to Gender::MALE $generator->givenName(Gender::MALE); // generates a random Dutch family name $generator->familyName();
一些语言,如冰岛语,有性别化的姓氏,所以可以向 familyName
方法提供可选的性别
$locale = Locale::create('is_IS'); $generator = Factory::create($locale); echo $generator->familyName(Gender::FEMALE); // Eiðsdóttir echo $generator->familyName(Gender::MALE); // Þorfinnsson
源数据
每个语言/国家的名称都是使用 ChatGPT 生成的,并在可能的情况下补充了 FakerPHP 名称。
贡献
向区域添加名称
有两种方法可以添加名称;
- 将它们添加到特定区域的 JSON 文件中
- 将它们添加到特定区域的
Name.php
文件中
向特定区域的 JSON 文件添加名称
要将名称添加到区域的 JSON 文件中,请打开位于 data
目录中的区域文件,并将名称添加到适当的类型(给定名: male
& female
,姓氏: family
、family_male
& family_female
,中间名: middle
)。
之后,运行
php scripts/generate-php-from-json.php
以将新添加的名称添加到适当的 PHP 文件中。
向特定区域的 Name.php
文件添加名称
要将名称添加到区域的 Name.php
文件中,请打开位于 src/Providers/{locale}
目录中的该文件,并将名称添加到适当的属性中。
之后,运行
php scripts/generate-json-from-php.php
以将新添加的名称添加到适当的 JSON 文件中。
添加新区域
添加新区域相当简单。在 src/Providers
目录中创建一个新目录(格式为 ab_CD
),然后在新的目录中创建一个 Name.php
文件。
新的 Name.php
文件必须扩展
LilPecky\RandomPersonGenerator\Providers\Name::class
添加新语言
如果您添加了尚未存在语言的区域(例如,af_ZA 表示南非的阿非利堪斯语),如果您能将该新语言添加到
LilPecky\RandomPersonGenerator\Languages::LANGUAGES
数组,其中以 ISO 639-1 语言代码作为键和语言名称作为值(例如,'af' => 'Afrikaans'
)。