faker是一次意外的收获,当时想找一个随机生成字符进行填充数据表的方法,就看到faker这样一个项目。

安装

依赖库原因,只能通过composer方式下载安装

composer require fzaninotto/faker

已经不止一次的碰到这样的需要通过composer安装的库了。因为暂时主要还是基于ci框架开发,所以只能将其放置到ci library中使用,达不到composer集成化到项目中的效果。yii2和laravel框架这方面更加倚重于composer,所以之后如果要扩展学习框架知识的话,还得把composer的使用熟练掌握。

下载后将vendor文件夹改成faker放到library目录下,同时添加一个库引入文件Faker_init.php,内容如下:

class Faker_init
{
    private $ci;

    public function __construct()
    {
        $this->ci =& get_instance();
        require_once 'faker/autoload.php';
    }
}

具体实现(某个数据模型中)

public function generate($num = 10)
    {
        $this->load->library('faker_init');
        $faker = Faker\Factory::create();
        $insertArr = array();
        $categories = array('', '护肤', '彩妆', '洗护', '香氛', '防晒');
        for ($i = 0; $i < $num; $i++) {
            $cate_id = $faker->numberBetween(1, 5);
            $insertArr[] = array(
                'name' => $faker->randomElement($array = array('英树法国松露晚安面膜' . $i, '英树透明质酸保湿肌底液' . $i, '英树羊胎素精华面霜' . $i)),
                'picture' => 'upload/goods/' . $faker->randomElement($array = array('goods_20180310104327_6889', 'goods_20180411160948_7702', 'goods_20171103161139_3989')) . '.jpg',
                'cate_id' => $cate_id,
                'category' => $categories[$cate_id],
                'spec' => $faker->randomElement(array('50ml', '100ml', '套装组合')),
                'price' => $faker->numberBetween(100, 500),
                'try_stock' => 100,
                'pics' => 'upload/2018/05/03/8395aeadc0f93f3e.jpg,upload/2018/05/03/9225aeadc1847c7e.jpg,upload/2018/05/03/f5b5aeadc21e09ce.jpg',
//                'desc' => $faker->randomHtml(2, 3), //unknown
                'desc' => $faker->realText($maxNbChars = 200, $indexSize = 2),
                'start_time' => $this->datetime,
                'end_time' => date('Y-m-d H:i:s', strtotime($this->datetime)),
                'created_at' => $this->datetime
            );
        }
        $this->addMany($insertArr);
        return $insertArr;
    }

参考:
github地址
packagist地址