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;
    }

}

五、执行命令

六、查看测试数据

七、总结

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

相关推荐
合天网安实验室15 小时前
记录一个免杀的php webshell demo
渗透测试·php·webshell·免杀
AnalogElectronic16 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
跨境数据猎手17 小时前
跨境独立站系统技术拆解(附带源码)
服务器·前端·php
淘矿人18 小时前
从0到1:用Claude启动你的第一个项目
开发语言·人工智能·git·python·github·php·pygame
带娃的IT创业者20 小时前
深度解析:从零构建高性能 LLM API 中转网关与成本优化实战
开发语言·gpt·llm·php·高性能·成本优化·api网关
墨染天姬21 小时前
[AI]DeepSeek-R1的GRPO算法
人工智能·算法·php
一颗无敌码农21 小时前
多商户与多门店电商系统有什么区别?核心模式解析
微信小程序·php·用户运营·crmeb
a8a3021 天前
Laravel5.x进化史:核心特性全解析
nginx·php·laravel
dog2501 天前
圆锥曲线与丹德林内切球
网络·php
网络安全许木1 天前
自学渗透测试第28天(协议补漏与FTP抓包)
运维·服务器·网络安全·渗透测试·php