多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[Thinkphp5视频教程](https://v.58hualong.cn/) ## 通过本文你可以学到: * Faker 的使用 ## 当前问题 上一篇文章我们知道了如何使用 Seeder ,并知道了如何简单的使用 Seeder 填充数据,但是,你有没有发现,如果仅仅是上一篇内容所讲的使用方法,Seeder 显然是不够的,因为在实际项目开发中,我们需要的数据格式是丰富的,并不是简单的通过生成随机数来模拟真实数据就可以的,比如说我们要生成可以看得懂的用户呢称,IP地址,用户住址,假图片等我们可能需要的更多信息,如果这些信息要靠我们自己去编写规则显然也是非常麻烦的,所以呢,今天就给大家介绍一个PHP库:[fzaninotto/Faker](https://github.com/fzaninotto/Faker),这个库基本解决了上述描述的问题,非常的实用,看完这篇文章你就知道 Seeder + Faker 真是如虎添翼。 ## 安装 Faker 在 Thinkphp5 中安装 Faker 非常的简单,在项目根目录下执行: ~~~ composer require fzaninotto/faker ~~~ 安装成功之后我们就可以直接在 Seeder 中使用啦。 ## Faker 的使用姿势 就拿上一节课中的 `Users` 表举例,该表结构如下: | 字段 | 说明 | | --- | --- | | `nickname` | 呢称 | | `email` | 邮箱 | | `password` | 密码 | 使用 Faker 我们可以这样写: ~~~ <?php use think\migration\Seeder; class UserSeeder extends Seeder { /** * Run Method. * * Write your database seeder using this method. * * More information on writing seeders is available here: * http://docs.phinx.org/en/latest/seeding.html */ public function run() { $faker = Faker\Factory::create(); $rows = []; for ($i = 0; $i < 100; $i++) { $rows[] = [ 'nickname' => $faker->name, 'email' => $faker->email, 'password' => md5('123456'), ]; } $this->table('users')->insert($rows)->save(); } } ~~~ 执行 `php think seed:run` 之后,可以在数据库看到: php think seed:run 生成的数据非常的人性化,测试的时候也就更加方便了,关键只需要写几行代码就解决复杂的问题,是不是很棒! > Faker 的提供的方法非常的多,这里不做过多的阐述,感兴趣的小伙伴们可以去这里:[https://github.com/fzaninotto/Faker](https://github.com/fzaninotto/Faker) 查看它的使用教程。 ## Faker 生成中文数据 Faker 默认生成的都是英文数据,因为作者是西方国家的嘛,但是 Faker 也提供了中文的一些数据的支持,如: **中文姓名:** ~~~ $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\zh_CN\Person($faker)); // 中文姓名 var_dump($faker->name); ~~~ **手机号:** ~~~ $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\zh_CN\PhoneNumber($faker)); // 手机号 var_dump($faker->PhoneNumber); ~~~ **地址信息:** ~~~ $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\zh_CN\Address($faker)); // 城市 var_dump($faker->city); // 省 var_dump($faker->state); // 省份简称 var_dump($faker->stateAbbr); // 区域 var_dump($faker->area); // 国家 var_dump($faker->country); // 地址 var_dump($faker->address); // 邮编 var_dump($faker->postcode); ~~~ **公司信息:** ~~~ $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\zh_CN\Company($faker)); // 公司前缀 var_dump($faker->companyPrefix); // 公司后缀 var_dump($faker->companySuffix); // 公司名 var_dump($faker->companyPrefix . $faker->companySuffix); ~~~ **时间:** ~~~ $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\zh_CN\DateTime($faker)); // 上午/下午 var_dump($faker->amPm); // 星期 var_dump($faker->dayOfWeek); // 月份 var_dump($faker->monthName); ~~~ 好了今天的教程就到这里啦。此篇是小滕的《Thinkphp5入门系列课程》第十四课:Seeder(二)。 喜欢的给个订阅呗! **由于作者水平有限,如有错误请欢迎指正。** 作者:小滕Tt 链接:https://www.jianshu.com/p/af5b95ac1ed5 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。