🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
{% raw %} # PHP Faker 教程 > 原文: [https://zetcode.com/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 一起安装。 ```php $ composer req fzaninotto/faker ``` 我们安装`fzaninotto/faker`包。 ```php $ composer req symfony/var-dumper ``` 另外,我们安装了 Symfony Dumper,它在转储变量时提供更好的控制台输出。 ## Faker 工厂 使用`Faker\Factory::create()`,我们创建并初始化一个伪造者生成器。 在生成器上,我们访问生成器属性(称为格式化程序)以生成伪数据。 在内部,Faker 将数据生成委托给供应器。 默认供应器使用英语语言环境。 Faker 支持其他语言环境; 他们的完成水平不同。 ## 简单的 Faker 示例 以下示例是 Faker 的简单演示。 `simple.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); echo $faker->name . "\n"; echo $faker->address . "\n"; ``` 该示例输出伪造的名称和地址。 ```php $ php simple.php Antonia Hahn 355 Mills Light Apt. 722 Krajcikburgh, RI 36330 ``` 这是一个示例输出。 ## 伪造名称 在第二个示例中,我们伪造与用户名有关的数据。 `names.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); echo $faker->name() . "\n"; echo $faker->name('male') . "\n"; echo $faker->name('female') . "\n"; echo $faker->firstName() . "\n"; echo $faker->firstName($gender='male') . "\n"; echo $faker->firstName($gender='female') . "\n"; echo $faker->firstNameMale('female') . "\n"; echo $faker->firstNameFemale('female') . "\n"; echo $faker->lastName() . "\n"; ``` 该示例创建假的全名,男性的姓氏和姓氏。 ```php $ php names.php Darion Walker Prof. Chet Kessler Prof. Jaida Greenholt PhD Cristopher Reid Gilda Wiley Juanita Jones ``` This is a sample output. ## 伪造语言环境数据 Faker 在某种程度上支持本地化数据。 语言环境已传递给工厂`create()`方法。 请注意,语言环境已完成各种级别。 `localized.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create('sk_SK'); for ($i = 0; $i < 3; $i++) { $name = $faker->name; $city = $faker->cityName; $phone = $faker->phoneNumber; echo "$name, $city, $phone\n"; } ``` 该示例使用斯洛伐克语生成伪造数据。 ```php $ php localized.php RNDr. Kvetoslava Zelenayová DSc., Malé Dvorníky, 00421 742 587 664 Agáta Molnárová, Čabalovce, +421 857 627 309 PhDr. Igor Truben, Mokrá Lúka, 00421577302978 ``` 这是一个示例输出。 请注意,斯洛伐克语带有重音。 ## 伪造标题 以下示例为标题创建伪造数据。 Faker 产生学术和个人头衔。 `titles.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); echo $faker->title() . "\n"; echo $faker->title('male'). "\n"; echo $faker->title('female'). "\n"; echo $faker->titleMale . "\n"; echo $faker->titleFemale . "\n"; echo $faker->suffix . "\n"; ``` 该程序会为男性和女性生成假标题。 ```php $ php titles.php Ms. Dr. Miss Prof. Mrs. DDS ``` This is a sample output. ## 伪造颜色 Faker 可以创建颜色名称或不同的颜色格式,例如十六进制和 RGB。 `colours.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); echo $faker->hexcolor . "\n"; echo $faker->rgbcolor . "\n"; dump($faker->rgbColorAsArray); echo $faker->rgbCssColor . "\n"; echo $faker->safeColorName . "\n"; echo $faker->colorName . "\n"; ``` 该示例显示了如何使用 Faker 创建颜色。 ```php $ php colours.php #662d69 180,149,135 array:3 [ 0 => 190 1 => 115 2 => 170 ] rgb(119,164,223) aqua LightGreen DarkGray ``` This is a sample output. ## 伪造号码 Faker 允许生成随机数字,整数或浮点值。 `numbers.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); echo $faker->randomDigit . "\n"; echo $faker->randomDigitNotNull . "\n"; echo $faker->randomNumber() . "\n"; echo $faker->randomNumber($nbDigits = 3, $strict = true) . "\n"; echo $faker->randomFloat() . "\n"; echo $faker->randomFloat($nbMaxDecimals = 5, $min = 0, $max = 20) . "\n"; echo $faker->numberBetween($min = 1500, $max = 6000) . "\n"; dump($faker->shuffle([1, 2, 3, 4, 5, 6])); ``` 该示例生成随机数字,整数和浮点数。 它还会随机地对数组值进行混洗。 ```php $ php numbers.php 6 6 3654715 614 4164 12.29093 2347 array:6 [ 0 => 3 1 => 6 2 => 2 3 => 5 4 => 1 5 => 4 ] ``` This is a sample output. ## 伪造唯一值 使用`unique()`修饰符,我们可以产生唯一的假值。 `unique_values.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); $vals = []; for ($i = 0; $i < 6; $i++) { $vals[] = $faker->unique()->randomDigit; } dump($vals); ``` 该示例生成一个包含六个唯一数字的数组。 ```php $ php unique_values.php array:6 [ 0 => 0 1 => 6 2 => 9 3 => 1 4 => 5 5 => 3 ] ``` This is a sample output. ## 伪造可选值 使用`optional()`修饰符,我们可以生成可选的假值。 可选值可以为`null`。 `optional_values.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); $vals = []; for ($i = 0; $i < 6; $i++) { $vals[] = $faker->unique()->randomDigit; } dump($vals); ``` 该示例生成一个包含六个可选数字的数组。 ```php $ php optional_values.php array:6 [ 0 => 7 1 => 4 2 => null 3 => null 4 => null 5 => 8 ] ``` This is a sample output. ## 伪造互联网相关数据 Faker 有多个用于伪造与互联网相关的数据的访问器。 `internet.php` ```php <?php require('vendor/autoload.php'); $faker = Faker\Factory::create(); echo $faker->email . "\n"; echo $faker->safeEmail . "\n"; echo $faker->freeEmail . "\n"; echo $faker->companyEmail . "\n"; echo $faker->freeEmailDomain . "\n"; echo $faker->safeEmailDomain . "\n"; echo $faker->userName . "\n"; echo $faker->password . "\n"; echo $faker->domainName . "\n"; echo $faker->domainWord . "\n"; echo $faker->tld . "\n"; echo $faker->url . "\n"; echo $faker->slug . "\n"; echo $faker->ipv4 . "\n"; echo $faker->localIpv4 . "\n"; echo $faker->ipv6 . "\n"; echo $faker->macAddress . "\n"; ``` 该示例显示了各种与互联网相关的数据,包括电子邮件,域名,信息,IP 地址和 URL。 ```php $ php internet.php johns.ryleigh@rowe.com merle96@example.com nyasia.bergnaum@hotmail.com morar.dylan@champlin.com gmail.com example.net bartoletti.ena }#)W+OVU<Lgaa.Atp5^ metz.com blanda org http://www.kling.com/ optio-magnam-provident-pariatur-dolores-consequatur-beatae 127.131.186.145 10.135.68.26 ccf1:64a7:d145:98eb:742d:dc60:cf9e:5d4a C8:31:FD:24:15:06 ``` This is a sample output. ## 用 Faker 生成 XML 数据 在以下示例中,我们使用 Faker 和 Twig 模板生成 XML 数据。 XML 文件将包含用户。 ```php $ mkdir fakexml $ cd fakexml $ mkdir templates $ composer req fzaninotto/faker $ composer req twig/twig ``` 我们创建一个新的项目目录,并安装 Faker 和 Twig 模板引擎。 `User.php` ```php <?php class User { public $firstName; public $lastName; public $occupation; function __construct(string $first, string $last, string $occupation) { $this->firstName = $first; $this->lastName = $last; $this->occupation = $occupation; } } ``` 这是`User.php`,具有以下属性:`$firstName`,`$lastName`和`$occupation`; `fake_xml.php` ```php <?php require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/User.php'; use Twig\Environment; use Twig\Loader\FilesystemLoader; use Faker\Factory; $loader = new FilesystemLoader(__DIR__ . '/templates'); $twig = new Environment($loader); $faker = Factory::create(); $users = []; for ($i = 0; $i < 20; $i++) { $firstName = $faker->firstName; $lastName = $faker->lastName; $occupation = $faker->jobTitle; $user = new User($firstName, $lastName, $occupation); array_push($users, $user); } $content = $twig->render('users.xml.twig', ['users' => $users]); file_put_contents('users.xml', $content); ``` 该程序将生成一个包含二十个用户的数组。 数组将传递到 Twig 模板进行处理。 模板位于`templates`目录中。 生成的内容被写入`users.xml`文件。 `templates/users.xml.twig` ```php <?xml version="1.0" encoding="UTF-8"?> <users> {% for user in users %} <user id="{{ loop.index }}"> <firstname>{{ user.firstName }}</firstname> <lastname>{{ user.lastName }}</lastname> <occupation>{{ user.occupation }}</occupation> </user> {% endfor %} </users> ``` 在模板中,我们使用`for`指令来处理用户数组。 在本教程中,我们使用 PHP Faker 在 PHP 中生成伪数据。 您可能也对以下相关教程感兴趣: [PHP PDO 教程](/php/pdo/), [Twig 教程](/php/twig/)和 [PHP 教程](/lang/php/)。 {% endraw %}