{% raw %}
PHP Faker 教程
PHP Faker 教程展示了如何使用 Faker 包在 PHP 中生成伪造数据。 我们使用fzaninotto/Faker包。
PHP Faker
Faker 是一个生成假数据的 PHP 库。 Faka 数据通常用于测试或用一些伪数据填充数据库。 Faker 受到 Perl 的 Data::Faker 和 Ruby 的 Faker 的极大启发。
PHP Faker 设置
该包随 composer 一起安装。
$ composer req fzaninotto/faker
我们安装fzaninotto/faker包。
$ composer req symfony/var-dumper
另外,我们安装了 Symfony Dumper,它在转储变量时提供更好的控制台输出。
Faker 工厂
使用Faker\Factory::create(),我们创建并初始化一个伪造者生成器。 在生成器上,我们访问生成器属性(称为格式化程序)以生成伪数据。 在内部,Faker 将数据生成委托给供应器。
默认供应器使用英语语言环境。 Faker 支持其他语言环境; 他们的完成水平不同。
简单的 Faker 示例
以下示例是 Faker 的简单演示。
simple.php
<?phprequire('vendor/autoload.php');$faker = Faker\Factory::create();echo $faker->name . "\n";echo $faker->address . "\n";
该示例输出伪造的名称和地址。
$ php simple.phpAntonia Hahn355 Mills Light Apt. 722Krajcikburgh, RI 36330
这是一个示例输出。
伪造名称
在第二个示例中,我们伪造与用户名有关的数据。
names.php
<?phprequire('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 names.phpDarion WalkerProf. Chet KesslerProf. Jaida Greenholt PhDCristopherReidGildaWileyJuanitaJones
This is a sample output.
伪造语言环境数据
Faker 在某种程度上支持本地化数据。 语言环境已传递给工厂create()方法。 请注意,语言环境已完成各种级别。
localized.php
<?phprequire('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 localized.phpRNDr. Kvetoslava Zelenayová DSc., Malé Dvorníky, 00421 742 587 664Agáta Molnárová, Čabalovce, +421 857 627 309PhDr. Igor Truben, Mokrá Lúka, 00421577302978
这是一个示例输出。 请注意,斯洛伐克语带有重音。
伪造标题
以下示例为标题创建伪造数据。 Faker 产生学术和个人头衔。
titles.php
<?phprequire('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 titles.phpMs.Dr.MissProf.Mrs.DDS
This is a sample output.
伪造颜色
Faker 可以创建颜色名称或不同的颜色格式,例如十六进制和 RGB。
colours.php
<?phprequire('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 colours.php#662d69180,149,135array:3 [0 => 1901 => 1152 => 170]rgb(119,164,223)aquaLightGreenDarkGray
This is a sample output.
伪造号码
Faker 允许生成随机数字,整数或浮点值。
numbers.php
<?phprequire('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 numbers.php663654715614416412.290932347array:6 [0 => 31 => 62 => 23 => 54 => 15 => 4]
This is a sample output.
伪造唯一值
使用unique()修饰符,我们可以产生唯一的假值。
unique_values.php
<?phprequire('vendor/autoload.php');$faker = Faker\Factory::create();$vals = [];for ($i = 0; $i < 6; $i++) {$vals[] = $faker->unique()->randomDigit;}dump($vals);
该示例生成一个包含六个唯一数字的数组。
$ php unique_values.phparray:6 [0 => 01 => 62 => 93 => 14 => 55 => 3]
This is a sample output.
伪造可选值
使用optional()修饰符,我们可以生成可选的假值。 可选值可以为null。
optional_values.php
<?phprequire('vendor/autoload.php');$faker = Faker\Factory::create();$vals = [];for ($i = 0; $i < 6; $i++) {$vals[] = $faker->unique()->randomDigit;}dump($vals);
该示例生成一个包含六个可选数字的数组。
$ php optional_values.phparray:6 [0 => 71 => 42 => null3 => null4 => null5 => 8]
This is a sample output.
伪造互联网相关数据
Faker 有多个用于伪造与互联网相关的数据的访问器。
internet.php
<?phprequire('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 internet.phpjohns.ryleigh@rowe.commerle96@example.comnyasia.bergnaum@hotmail.commorar.dylan@champlin.comgmail.comexample.netbartoletti.ena}#)W+OVU<Lgaa.Atp5^metz.comblandaorghttp://www.kling.com/optio-magnam-provident-pariatur-dolores-consequatur-beatae127.131.186.14510.135.68.26ccf1:64a7:d145:98eb:742d:dc60:cf9e:5d4aC8:31:FD:24:15:06
This is a sample output.
用 Faker 生成 XML 数据
在以下示例中,我们使用 Faker 和 Twig 模板生成 XML 数据。 XML 文件将包含用户。
$ mkdir fakexml$ cd fakexml$ mkdir templates$ composer req fzaninotto/faker$ composer req twig/twig
我们创建一个新的项目目录,并安装 Faker 和 Twig 模板引擎。
User.php
<?phpclass 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
<?phprequire __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
<?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 教程, Twig 教程和 PHP 教程。
{% endraw %}
