chrgriffin/blizzard-faker

暴雪游戏 PHP Faker 提供器。

v0.1.1 2018-11-22 16:40 UTC

This package is auto-updated.

Last update: 2024-09-23 05:57:23 UTC


README

blizzard-faker 是一个针对暴雪娱乐及其游戏相关 Faker 提供器的集合。

要求

blizzard-faker 需要 PHP 7.0 或更高版本,以及 fzaninotto/faker 1.6 或更高版本。

安装

您可以通过 composer 安装

composer install chrgriffin/blizzard-faker

用法

您可以将暴雪提供器添加到 Faker,就像添加任何其他提供器一样

use Faker\Factory;
use ChrGriffin\BlizzardFaker\Names as BlizzardNames;

$faker = Factory::create();
$faker->addProvider(new BlizzardNames($faker));

一旦添加,您就可以立即像平常一样使用提供器方法

$name = $faker->name();

然而,blizzard-faker 提供了额外的过滤功能

$orcName = $faker
    ->blizzardNames() // this line prevents conflict with other Blizzard providers
    ->orc()
    ->name();

这些过滤器是可添加和可链式的,这意味着如果您想从《暗黑破坏神》、《星际争霸》或《魔兽》中获取人类或兽人名字,您可以编写

$name = $faker
    ->blizzardNames()
    ->diablo()
    ->starcraft()
    ->warcraft()
    ->human()
    ->terran()
    ->name();

提供器

ChrGriffin\BlizzardFaker\Names

有效的系列

Names 提供器对所有暴雪系列都有效。

可用方法和参数

  • blizzardNames() : ChrGriffin\BlizzardFaker\Names (防止与其他提供器冲突)
  • firstName($gender, $franchise) : string
    • $gender: 'male', 'female', 或 null (任何)
    • $franchise: 有效系列的名字,或 null (任何)
  • lastName($gender, $franchise) : string
    • $gender: 'male', 'female', 或 null (任何)
    • $franchise: 有效系列的名字,或 null (任何)
  • fullName($gender, $franchise) : string
    • $gender: 'male', 'female', 或 null (任何)
    • $franchise: 有效系列的名字,或 null (任何)
  • name($type, $gender, $franchise) : string
    • $type: 'first', 'last', 'full', 或 null ('full')
    • $gender: 'male', 'female', 或 null (任何)
    • $franchise: 有效系列的名字,或 null (任何)

ChrGriffin\BlizzardFaker\Monsters

有效的系列

Monsters 提供器仅对《暗黑破坏神》系列有效。

可用方法和参数

  • blizzardMonsters() : ChrGriffin\BlizzardFaker\Monsters (防止与其他提供器冲突)
  • monster($franchise) : string
    • $franchise: 有效系列的名字,或 null (任何)

过滤器

在直接调用提供器之后,您可以在获取数据之前对其应用各种过滤器。

请注意,并非所有过滤器都适用于所有提供器,或相互之间。只需运用常识,您应该就能顺利。

如果过滤器应用于不兼容的提供器或现有的过滤器集,它将抛出 ChrGriffin\BlizzardFaker\Invalid{Filter}Exception。例如,以下代码

$faker
    ->blizzardNames()
    ->starcraft()
    ->orc();

将抛出 ChrGriffin\BlizzardFaker\InvalidRaceException

系列过滤器

您可以按以下系列进行过滤

  • ->diablo()
  • ->hearthstone()
  • ->heroesOfTheStorm()
  • ->starcraft()
  • ->warcraft()

种族过滤器

您可以按以下种族进行过滤

  • ->angel()
  • ->bloodElf()
  • ->demon()
  • ->draenei()
  • ->dragon()
  • ->dwarf()
  • ->elemental()
  • ->forsaken() (与 undead 有很多,但不是 100% 的重叠)
  • ->gnome()
  • ->goblin()
  • ->human()
  • ->human()
  • ->murloc()
  • ->nephalem()
  • ->nightElf()
  • ->orc()
  • ->pandaren()
  • ->primalZerg()
  • ->protoss()
  • ->tauren()
  • ->terran()
  • ->troll()
  • ->undead() (与 forsaken 有很多,但不是 100% 的重叠)
  • ->worgen()
  • ->xelNaga()
  • ->zerg()

路线图

  • 包括守望先锋系列
  • 为《暗黑破坏神》、《炉石传说》、《魔兽》提供职业(例如圣骑士、术士等)提供器
  • 为所有系列提供能力提供器
  • 研究图标/图像提供器的可行性

内部结构

src 目录的简要调查将揭示与 Faker 本身截然不同的结构。

在大多数情况下,并不是单个提供者包含几个数组并随机选择一个元素,而是调用多个(有时是嵌套的)DataProvider类来提供一组随机数据。这样做是为了便于进行大量筛选,而不会过多影响性能;而不是筛选包含暴雪整个产品线数据的单个巨大数组,我们只需选择一个DataProvider,然后将其应用于

除了可以筛选数据的各种方式之外,还有一些内置的“规则”用于返回某些提供者的数据。

  • ChrGriffin\BlizzardFaker\Names:

    • 传说角色名称:重要的传说角色名称不会被分割以进行随机分配,相反,如果返回,它总是完整的、未经修改的名称。例如,“Garrosh”永远不会被分配随机的兽人姓氏——当检索全名时,它总是是“Garrosh Hellscream”(或仅请求姓氏时为“Garrosh”)。
    • 传说角色姓氏:如果一个重要的传说角色有一个也被其他角色携带的姓氏——例如,家族姓氏,如“Cain”,或部落名称,如“Bloodhoof”——那么这个姓氏可以像其他任何名称一样随机分配。如果它们是这个姓氏的唯一实例,那么将遵守上述规则。
    • 无姓氏的种族:有一些没有姓氏的种族示例,如德莱尼或 Protoss。在这些情况下,它们的个人名字被视为全名或姓氏的有效值:因此,在请求全名或姓氏时都可能看到“Tassadar”。对于有相关头衔的重要传说角色,角色加上其头衔可以返回为全名(例如,“Hierarch Artanis”或“Tyrael,正义天使”)。
  • ChrGriffin\BlizzardFaker\Monsters:

    • 怪物名称生成:此提供者遵循《暗黑破坏神2》随机命名怪物的格式:随机前缀、后缀和称谓组合以创建怪物名称。