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

}

五、执行命令

六、查看测试数据

七、总结

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

相关推荐
vipxieliang4 小时前
语言对比卡:PHP vs Go vs Java 的优缺点、适用场景与「为什么选 PHP」
java·go·php
东鹏特饮17 小时前
系统运维(传统/通用运维)面试题
开发语言·php
多客:duokelijie20 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
从琳开始9891 天前
网络原理入门(二)------OSI七层模型?TCP/IP五层(四层)模型原来是这样的
java·网络·tcp/ip·java-ee·php
BingoGo1 天前
PHP 标准库的价值远不止少写几行代码
后端·php
JaguarJack1 天前
PHP 标准库的价值远不止少写几行代码
后端·php·服务端
evoxwht2 天前
给 CRMEB V8 接一个 S3 兼容存储驱动
php
北京中科新远科技2 天前
高速交换机端口预算怎么做?下行、上联、拆分和冗余计算框架
开发语言·php
其实防守也摸鱼2 天前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
可涵不会debug2 天前
PHP2Shell 爆发一周后:CVE-2026-109618/109619 自查、修复与防护实录
安全·php·云安全·waf·phpshell