Ram*_*ker 5 php factory laravel
laravel 的一个新工厂看起来是这样的;
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Model;
use Faker\Generator as Faker;
$factory->define(Model::class, function (Faker $faker) {
return [
//
];
});
Run Code Online (Sandbox Code Playgroud)
变量未$factory在此文件中定义。这个变量是如何以及在哪里定义的?甲dd($factory)结果如预期中的\Illuminate\Database\Eloquent\Factory对象
fro*_*ega 10
该变量$factory未在文件本身中定义。只有当 Laravel 处理这个文件时,通过在加载过程中包含它, $factory 才会引用 Factory 对象。
这是加载工厂文件的地方:\Illuminate\Database\Eloquent\Factory::load
请注意工厂文件开头的 docblock,它可以帮助您的 IDE 自动完成:
/** @var \Illuminate\Database\Eloquent\Factory $factory */
Run Code Online (Sandbox Code Playgroud)
现在你可能想知道Factory::load()第一个被调用的地方。当工厂第一次被 DI 容器实例化时,它会被调用,例如,一旦你使用factory()助手。