类图
只画了主要关键方法,laravel Factory不止这些
代码
<?
// Laravel工厂数据生成为例
// use Illuminate\Database\Eloquent\Factories\Factory;
// 抽象工厂
abstract class Factory{
protected $model;
protected $data;
abstract public function definition();
public function count(int $count) {
echo "生成{$count}条数据\n";
for($i=0; $i<$count; $i++){
$this->data[] = $this->definition();
}
return $this;
}
// 执行入库或其他操作
public function create(){
echo "写入数据库:{$this->table}\n";
return $this->data;
}
}
class UserFactory extends Factory{
protected $model = 'user';
public function definition() {
// echo "生成数据:\n" ;
return [
'name' => 'name_' . rand(1, 200),
'password' => 'password_'. rand(1, 200),
];
}
}
class ArticleFactory extends Factory{
protected $model = 'article';
public function definition() {
return [
'title' => '文章标题-' . rand(1, 200),
'desc' => '文章内容',
];
}
}
// 生成2条文章数据
$data = (new ArticleFactory())->count(2)->create();
var_dump($data);
//生成3个用户信息
$data = (new UserFactory())->count(3)->create();
var_dump($data);
/**
* 对于新的方法,只需要新建一个文件类,实现definition方法,返回生成的数据即可
**/