chrgriffin / blizzard-faker
暴雪游戏 PHP Faker 提供器。
Requires
- php: ^7.0
- fzaninotto/faker: ^1.6
Requires (Dev)
- phpunit/phpunit: ^7.4
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》随机命名怪物的格式:随机前缀、后缀和称谓组合以创建怪物名称。