webman框架虚拟数据填充fakerphp/faker插件的使用

一、使用背景

作为一名研发人员,想要批量制造一些测试数据,无论是自己测试,还是方便测试同学,都是有益的。fakerphp/faker插件可满足你的一些需求,它可以生成接近真实数据的一些虚拟数据,带来的体验感更好。

二、插件安装

参考Packagist插件市场:

在终端执行命令,并且可以指定对应的版本,选择不同的版本需要注意不同版本对php版本的要求:

插件安装完毕,查看扩展包目录:

三、框架内使用

webman框架可以自定义终端命令,执行如下:

app/Command下生成目录文件:

四、代码展示

复制代码
引入安装的扩展库Faker\Factory,创建生成器实例,即可使用插件的属性如name,address,email,phoneNumber等等,在for循环里制定生成的数据个数
php 复制代码
<?php

namespace app\command;

use app\model\OrderCopy;
use Faker\Factory;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;


class FakeDataCreate extends Command
{
    protected static string $defaultName = 'fakeData:create';
    protected static string $defaultDescription = 'fakeData create';

    /**
     * @return void
     */
    protected function configure(): void
    {
        $this->addArgument('name', InputArgument::OPTIONAL, 'Name description');
    }

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     * @return int
     */
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeln('start fakeData:create');
        $faker = Factory::create('zh_CN'); // 创建生成器实例
        $users = [];
        for ($i = 0; $i < 100; $i++) {
            $users[] = [
                'school_id' => 1,
                'canteen_id' => 2,
                'stall_id' => 9,
                'user_name' => $faker->name,
                'email' => $faker->unique()->email,
                'address' => $faker->address(),
                'mobile' => $faker->phoneNumber,
                'sn' => 'MO' . date('YmdHis',time()) . $faker->numerify('########'),
                'amount' => $faker->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 100),
                'amount_real' => $faker->randomFloat(nbMaxDecimals: 2, min: 0, max: 100),
            ];
        }
        // 批量插入数据
        OrderCopy::insert($users);
        $output->writeln('end fakeData:create');
        return self::SUCCESS;
    }

}

五、执行命令

六、查看测试数据

七、总结

相比自己创建的测试数据,还是真实一些,对于后续测试,表查询效率优化,索引是否生效检查等都有积极的意义。

相关推荐
fzb5QsS1p19 小时前
告别重复造轮子,Qt 快速开发脚手架
开发语言·qt·php
取码网21 小时前
最新临时文件快传系统源码 轻量化 带后台
php
彧翎Pro21 小时前
ASP.NET Core 外部依赖调用治理实战:HttpClientFactory、Polly 与幂等边界
microsoft·asp.net·php
wenzhangli71 天前
ooderAgent 龙虾时代的统一认证体系
开发语言·php
cch89181 天前
Laravel vs ThinkPHP:PHP框架终极对决
android·php·laravel
morrisonwu1 天前
kafka4.2对应php rdkafka扩展安装以及php的producer和consumer写法及避坑
开发语言·php
李白的天不白1 天前
php处理跨域请求
php
流觞 无依1 天前
DedeCMS plus/vote.php SQL注入漏洞修复教程
sql·php
fengci.1 天前
php反序列化(复习)(第二章)
android·开发语言·学习·php
cch89181 天前
五大PHP框架对比:如何选择最适合你的?
开发语言·php