{% raw %}

PHP Faker 教程

原文: https://zetcode.com/php/faker/

PHP Faker 教程展示了如何使用 Faker 包在 PHP 中生成伪造数据。 我们使用fzaninotto/Faker包。

PHP Faker

Faker 是一个生成假数据的 PHP 库。 Faka 数据通常用于测试或用一些伪数据填充数据库。 Faker 受到 Perl 的 Data::Faker 和 Ruby 的 Faker 的极大启发。

PHP Faker 设置

该包随 composer 一起安装。

  1. $ composer req fzaninotto/faker

我们安装fzaninotto/faker包。

  1. $ composer req symfony/var-dumper

另外,我们安装了 Symfony Dumper,它在转储变量时提供更好的控制台输出。

Faker 工厂

使用Faker\Factory::create(),我们创建并初始化一个伪造者生成器。 在生成器上,我们访问生成器属性(称为格式化程序)以生成伪数据。 在内部,Faker 将数据生成委托给供应器。

默认供应器使用英语语言环境。 Faker 支持其他语言环境; 他们的完成水平不同。

简单的 Faker 示例

以下示例是 Faker 的简单演示。

simple.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. echo $faker->name . "\n";
  5. echo $faker->address . "\n";

该示例输出伪造的名称和地址。

  1. $ php simple.php
  2. Antonia Hahn
  3. 355 Mills Light Apt. 722
  4. Krajcikburgh, RI 36330

这是一个示例输出。

伪造名称

在第二个示例中,我们伪造与用户名有关的数据。

names.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. echo $faker->name() . "\n";
  5. echo $faker->name('male') . "\n";
  6. echo $faker->name('female') . "\n";
  7. echo $faker->firstName() . "\n";
  8. echo $faker->firstName($gender='male') . "\n";
  9. echo $faker->firstName($gender='female') . "\n";
  10. echo $faker->firstNameMale('female') . "\n";
  11. echo $faker->firstNameFemale('female') . "\n";
  12. echo $faker->lastName() . "\n";

该示例创建假的全名,男性的姓氏和姓氏。

  1. $ php names.php
  2. Darion Walker
  3. Prof. Chet Kessler
  4. Prof. Jaida Greenholt PhD
  5. Cristopher
  6. Reid
  7. Gilda
  8. Wiley
  9. Juanita
  10. Jones

This is a sample output.

伪造语言环境数据

Faker 在某种程度上支持本地化数据。 语言环境已传递给工厂create()方法。 请注意,语言环境已完成各种级别。

localized.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create('sk_SK');
  4. for ($i = 0; $i < 3; $i++) {
  5. $name = $faker->name;
  6. $city = $faker->cityName;
  7. $phone = $faker->phoneNumber;
  8. echo "$name, $city, $phone\n";
  9. }

该示例使用斯洛伐克语生成伪造数据。

  1. $ php localized.php
  2. RNDr. Kvetoslava Zelenayová DSc., Malé Dvorníky, 00421 742 587 664
  3. Agáta Molnárová, Čabalovce, +421 857 627 309
  4. PhDr. Igor Truben, Mokrá Lúka, 00421577302978

这是一个示例输出。 请注意,斯洛伐克语带有重音。

伪造标题

以下示例为标题创建伪造数据。 Faker 产生学术和个人头衔。

titles.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. echo $faker->title() . "\n";
  5. echo $faker->title('male'). "\n";
  6. echo $faker->title('female'). "\n";
  7. echo $faker->titleMale . "\n";
  8. echo $faker->titleFemale . "\n";
  9. echo $faker->suffix . "\n";

该程序会为男性和女性生成假标题。

  1. $ php titles.php
  2. Ms.
  3. Dr.
  4. Miss
  5. Prof.
  6. Mrs.
  7. DDS

This is a sample output.

伪造颜色

Faker 可以创建颜色名称或不同的颜色格式,例如十六进制和 RGB。

colours.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. echo $faker->hexcolor . "\n";
  5. echo $faker->rgbcolor . "\n";
  6. dump($faker->rgbColorAsArray);
  7. echo $faker->rgbCssColor . "\n";
  8. echo $faker->safeColorName . "\n";
  9. echo $faker->colorName . "\n";

该示例显示了如何使用 Faker 创建颜色。

  1. $ php colours.php
  2. #662d69
  3. 180,149,135
  4. array:3 [
  5. 0 => 190
  6. 1 => 115
  7. 2 => 170
  8. ]
  9. rgb(119,164,223)
  10. aqua
  11. LightGreen
  12. DarkGray

This is a sample output.

伪造号码

Faker 允许生成随机数字,整数或浮点值。

numbers.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. echo $faker->randomDigit . "\n";
  5. echo $faker->randomDigitNotNull . "\n";
  6. echo $faker->randomNumber() . "\n";
  7. echo $faker->randomNumber($nbDigits = 3, $strict = true) . "\n";
  8. echo $faker->randomFloat() . "\n";
  9. echo $faker->randomFloat($nbMaxDecimals = 5, $min = 0, $max = 20) . "\n";
  10. echo $faker->numberBetween($min = 1500, $max = 6000) . "\n";
  11. dump($faker->shuffle([1, 2, 3, 4, 5, 6]));

该示例生成随机数字,整数和浮点数。 它还会随机地对数组值进行混洗。

  1. $ php numbers.php
  2. 6
  3. 6
  4. 3654715
  5. 614
  6. 4164
  7. 12.29093
  8. 2347
  9. array:6 [
  10. 0 => 3
  11. 1 => 6
  12. 2 => 2
  13. 3 => 5
  14. 4 => 1
  15. 5 => 4
  16. ]

This is a sample output.

伪造唯一值

使用unique()修饰符,我们可以产生唯一的假值。

unique_values.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. $vals = [];
  5. for ($i = 0; $i < 6; $i++) {
  6. $vals[] = $faker->unique()->randomDigit;
  7. }
  8. dump($vals);

该示例生成一个包含六个唯一数字的数组。

  1. $ php unique_values.php
  2. array:6 [
  3. 0 => 0
  4. 1 => 6
  5. 2 => 9
  6. 3 => 1
  7. 4 => 5
  8. 5 => 3
  9. ]

This is a sample output.

伪造可选值

使用optional()修饰符,我们可以生成可选的假值。 可选值可以为null

optional_values.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. $vals = [];
  5. for ($i = 0; $i < 6; $i++) {
  6. $vals[] = $faker->unique()->randomDigit;
  7. }
  8. dump($vals);

该示例生成一个包含六个可选数字的数组。

  1. $ php optional_values.php
  2. array:6 [
  3. 0 => 7
  4. 1 => 4
  5. 2 => null
  6. 3 => null
  7. 4 => null
  8. 5 => 8
  9. ]

This is a sample output.

伪造互联网相关数据

Faker 有多个用于伪造与互联网相关的数据的访问器。

internet.php

  1. <?php
  2. require('vendor/autoload.php');
  3. $faker = Faker\Factory::create();
  4. echo $faker->email . "\n";
  5. echo $faker->safeEmail . "\n";
  6. echo $faker->freeEmail . "\n";
  7. echo $faker->companyEmail . "\n";
  8. echo $faker->freeEmailDomain . "\n";
  9. echo $faker->safeEmailDomain . "\n";
  10. echo $faker->userName . "\n";
  11. echo $faker->password . "\n";
  12. echo $faker->domainName . "\n";
  13. echo $faker->domainWord . "\n";
  14. echo $faker->tld . "\n";
  15. echo $faker->url . "\n";
  16. echo $faker->slug . "\n";
  17. echo $faker->ipv4 . "\n";
  18. echo $faker->localIpv4 . "\n";
  19. echo $faker->ipv6 . "\n";
  20. echo $faker->macAddress . "\n";

该示例显示了各种与互联网相关的数据,包括电子邮件,域名,信息,IP 地址和 URL。

  1. $ php internet.php
  2. johns.ryleigh@rowe.com
  3. merle96@example.com
  4. nyasia.bergnaum@hotmail.com
  5. morar.dylan@champlin.com
  6. gmail.com
  7. example.net
  8. bartoletti.ena
  9. }#)W+OVU<Lgaa.Atp5^
  10. metz.com
  11. blanda
  12. org
  13. http://www.kling.com/
  14. optio-magnam-provident-pariatur-dolores-consequatur-beatae
  15. 127.131.186.145
  16. 10.135.68.26
  17. ccf1:64a7:d145:98eb:742d:dc60:cf9e:5d4a
  18. C8:31:FD:24:15:06

This is a sample output.

用 Faker 生成 XML 数据

在以下示例中,我们使用 Faker 和 Twig 模板生成 XML 数据。 XML 文件将包含用户。

  1. $ mkdir fakexml
  2. $ cd fakexml
  3. $ mkdir templates
  4. $ composer req fzaninotto/faker
  5. $ composer req twig/twig

我们创建一个新的项目目录,并安装 Faker 和 Twig 模板引擎。

User.php

  1. <?php
  2. class User
  3. {
  4. public $firstName;
  5. public $lastName;
  6. public $occupation;
  7. function __construct(string $first, string $last, string $occupation)
  8. {
  9. $this->firstName = $first;
  10. $this->lastName = $last;
  11. $this->occupation = $occupation;
  12. }
  13. }

这是User.php,具有以下属性:$firstName$lastName$occupation

fake_xml.php

  1. <?php
  2. require __DIR__ . '/vendor/autoload.php';
  3. require __DIR__ . '/User.php';
  4. use Twig\Environment;
  5. use Twig\Loader\FilesystemLoader;
  6. use Faker\Factory;
  7. $loader = new FilesystemLoader(__DIR__ . '/templates');
  8. $twig = new Environment($loader);
  9. $faker = Factory::create();
  10. $users = [];
  11. for ($i = 0; $i < 20; $i++)
  12. {
  13. $firstName = $faker->firstName;
  14. $lastName = $faker->lastName;
  15. $occupation = $faker->jobTitle;
  16. $user = new User($firstName, $lastName, $occupation);
  17. array_push($users, $user);
  18. }
  19. $content = $twig->render('users.xml.twig', ['users' => $users]);
  20. file_put_contents('users.xml', $content);

该程序将生成一个包含二十个用户的数组。 数组将传递到 Twig 模板进行处理。 模板位于templates目录中。 生成的内容被写入users.xml文件。

templates/users.xml.twig

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <users>
  3. {% for user in users %}
  4. <user id="{{ loop.index }}">
  5. <firstname>{{ user.firstName }}</firstname>
  6. <lastname>{{ user.lastName }}</lastname>
  7. <occupation>{{ user.occupation }}</occupation>
  8. </user>
  9. {% endfor %}
  10. </users>

在模板中,我们使用for指令来处理用户数组。

在本教程中,我们使用 PHP Faker 在 PHP 中生成伪数据。

您可能也对以下相关教程感兴趣: PHP PDO 教程Twig 教程PHP 教程

{% endraw %}