lil-pecky/random-person-generator

1.0.0 2023-04-04 13:20 UTC

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 名称。

贡献

向区域添加名称

有两种方法可以添加名称;

  1. 将它们添加到特定区域的 JSON 文件中
  2. 将它们添加到特定区域的 Name.php 文件中

向特定区域的 JSON 文件添加名称

要将名称添加到区域的 JSON 文件中,请打开位于 data 目录中的区域文件,并将名称添加到适当的类型(给定名: male & female,姓氏: familyfamily_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')。