Laravel 工厂如何定义 $factory 变量?
How does a Laravel factory gets the $factory variable defined?
laravel 的新工厂看起来像这样;
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Model;
use Faker\Generator as Faker;
$factory->define(Model::class, function (Faker $faker) {
return [
//
];
});
变量 $factory
未在此文件中定义。这个变量是如何定义的,在哪里定义的? dd($factory)
结果在 \Illuminate\Database\Eloquent\Factory
对象
中符合预期
变量$factory
未在文件本身中定义。只有当此文件由 Laravel 处理时,通过在加载过程中包含它,$factory 才会引用 Factory 对象。
这是加载工厂文件的地方:\Illuminate\Database\Eloquent\Factory::load
注意工厂文件开头的文档块,它可以帮助您 IDE 自动完成:
/** @var \Illuminate\Database\Eloquent\Factory $factory */
现在您可能想知道 Factory::load()
第一次被调用的地方。当工厂第一次被 DI 容器实例化时,它会被调用,例如,一旦您使用 factory() 帮助器。
laravel 的新工厂看起来像这样;
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Model;
use Faker\Generator as Faker;
$factory->define(Model::class, function (Faker $faker) {
return [
//
];
});
变量 $factory
未在此文件中定义。这个变量是如何定义的,在哪里定义的? dd($factory)
结果在 \Illuminate\Database\Eloquent\Factory
对象
变量$factory
未在文件本身中定义。只有当此文件由 Laravel 处理时,通过在加载过程中包含它,$factory 才会引用 Factory 对象。
这是加载工厂文件的地方:\Illuminate\Database\Eloquent\Factory::load
注意工厂文件开头的文档块,它可以帮助您 IDE 自动完成:
/** @var \Illuminate\Database\Eloquent\Factory $factory */
现在您可能想知道 Factory::load()
第一次被调用的地方。当工厂第一次被 DI 容器实例化时,它会被调用,例如,一旦您使用 factory() 帮助器。