许多网站和应用程序的开发都需要各种类型的数据来模拟现实生活中的工作方式。在项目的测试和开发阶段,我们经常使用虚假数据来填充数据库、填充UI元素等等。
自己编写代码为项目生成虚假数据可能会非常繁琐。在本教程中,您将学习如何使用PHP中久经考验的Faker库来生成虚假数据。
在继续之前,我想澄清几点。
最初的虚假库是fzaninotto/Faker。但是,它在2020年12月11日被所有者存档。现在,名为FakerPHP/Faker的库分支正在继续开发工作。如果您正在尝试决定应该在项目中使用哪一个,请选择FakerPHP。
来自FakerPHP的Faker要求您的PHP版本大于或等于7.4。这与原始库支持的PHP >= 5.3.3形成对比。
从现在开始,本教程中对Faker的所有引用都将指代较新的分支版本。
您可以使用composer安装faker,方法是运行以下命令:
<code>composer require fakerphp/faker</code>
这将为您创建一个composer.json文件,并在vendor目录中安装所有必需的包。
安装完成后,您可以通过将这两行添加到代码中来开始在项目中使用该库:
<code class="language-php">require 'vendor/autoload.php'; $faker = Faker\Factory::create();</code>
第一行将faker库包含在我们的项目中。
在第二行中,我们使用对Generator实例的静态Factory类的调用初始化一个faker生成器,我们可以使用它来生成各种虚假数据。
Provider对象用于生成随机数据。对我们捆绑了默认提供程序的Generator实例的调用。
默认提供程序生成基于美国的姓名、地址、电话号码、公司详细信息等。这些调用在后台添加了提供程序:
<code class="language-php">$faker = new Faker\Generator(); $faker->addProvider(new Faker\Provider\en_US\Person($faker)); $faker->addProvider(new Faker\Provider\en_US\Address($faker)); $faker->addProvider(new Faker\Provider\en_US\PhoneNumber($faker)); $faker->addProvider(new Faker\Provider\en_US\Company($faker)); $faker->addProvider(new Faker\Provider\Lorem($faker)); $faker->addProvider(new Faker\Provider\Internet($faker));</code>
您可以通过简单地调用name属性来在faker中生成虚假姓名。每次调用都会输出不同的随机名称。这是一个例子:
<code class="language-php">require 'vendor/autoload.php'; $faker = Faker\Factory::create(); $fake_names = []; for($i = 0; $i < 10; $i++){ $fake_names[] = $faker->name; } /* Array ( [0] => Gabe Mann Jr. [1] => Lazaro Leuschke [2] => Angie Welch Sr. [3] => Prof. Kirk Krajcik III [4] => Sadye Mosciski [5] => Danyka Braun [6] => Jacinthe Dickinson [7] => Clifton Beahan [8] => Dr. Jan Casper MD [9] => Adelia Schimmel ) */ print_r($fake_names);</code>
如果您对全名不感兴趣,您也可以只请求名字或姓氏。
<code class="language-php">require 'vendor/autoload.php'; $faker = Faker\Factory::create(); $first_names = []; for($i = 0; $i < 10; $i++){ $first_names[] = $faker->firstName; } // Outputs: Dylan, Ariane, Doris, Reilly, Jamar, Merl, Maverick, Frederik, Lucius, Madyson echo implode(', ', $first_names);</code>
假设您只需要男性或女性姓名。在这种情况下,您可以简单地调用firstNameMale()和address()方法或访问phoneNumber()、phoneNumberWithExtension()。
<code class="language-php">require 'vendor/autoload.php'; $faker = Faker\Factory::create(); /* Phone Number: +1-724-494-3101 Phone Number (Extension): (475) 499-3999 x9969 Phone Number (Toll Free): 855.618.0155 Phone Number: 1-660-934-8668 Phone Number (Extension): 351-533-3301 x1602 Phone Number (Toll Free): 844-530-4671 */ for($i = 0; $i < 2; $i++){ echo "Phone Number: ".$faker->phoneNumber()."\n"; echo "Phone Number (Extension): ".$faker->phoneNumberWithExtension()."\n"; echo "Phone Number (Toll Free): ".$faker->tollFreePhoneNumber()."\n\n"; }</code>
假设您正在开发一个针对特定区域的应用程序。在这种情况下,您可能希望使用反映目标市场的数据。例如,一个面向尼日利亚人的应用程序将受益于拥有尼日利亚姓名。类似地,面向印度用户的应用程序可能希望使用印度地址。
生成特定于区域设置的数据的技巧是将区域设置传递给randomNumber()方法,默认情况下,randomNumber()方法生成具有指定位数的随机数。您可以传递unixTime()方法来获取0到当前时间或指定时间之间的Unix时间戳值。也可以生成随机dateTime()方法。同样,默认最大值为当前日期和时间。
如果您想生成dateTimeAD()方法,它会返回1年1月1日到给定最大值之间的日期。
您可以使用time()方法以特定格式生成随机日期和时间。
假设您需要获取dateTimeBetween()方法。
<code>composer require fakerphp/faker</code>
现在我们知道了如何使用Faker生成不同类型的数值,我们可以组合它们的结果来创建XML或HTML文档,用数值填充数据库等等。例如,考虑下面的代码,它为不同的人生成随机配置文件。
<code class="language-php">require 'vendor/autoload.php'; $faker = Faker\Factory::create();</code>
生成随机值后,您可以对它们执行任何操作。在本例中,我们在Base类中输出它们以生成我们想要的数据类型。如果您正在寻找一个生成随机数据的库,Faker绝对值得一试。
以上是使用Faker生成填充数据进行自动测试的详细内容。更多信息请关注PHP中文网其他相关文章!