UserFactory 中的 $factory 哪来的?
$factory->define(App\Models\User::class, function (Faker $faker) {
......
};
关于 LearnKu
\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factory.php的一个实例@theDog 没见到声明,直接使用了呢?
我不是说答案的,我也搞不太清楚。以下是理解推测:
1.定义模型工厂:
$factory->define();这一定是一段中间代码,在句代码的前面一定是创建了$factory这个对象。2.在何处使用:
模型工厂一定是数据填充的时候使用,也就是在EloquentSeeder执行的时候,通过函数factory(Eloquent::class)指定了(调用)Eloquent Factory。
3.如此推断,这必然和ServiceContainer的反射机制类似,指定哪个Eloquent::class,就会制造哪个用该Eloquent(Model)定义的Factory
希望有高手点拨一下,同样迷惑中?
@老好人 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factory.php中的load()方法,就是载入factory的,里面定义了$factory变量,并且有一句require
@hustnzj 构造方法调用了load方法
助手函数。在初始化的时候自动载入。有很多其他的没有引入,但是就直接使用的方法,很有可能是助手函数。
原型为:
weibo\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php