Laravel工厂如何获取定义的$ factory变量?

问题描述 投票:0回答:2

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未在此文件中定义。 variabele的定义方式和位置? dd($factory)\Illuminate\Database\Eloquent\Factory对象中得到预期的结果

php laravel factory
2个回答
0
投票

当您调用factory(YouClass::class)时,它将创建一个Factory Builder。调用create()时,它将作为匿名函数调用定义的工厂,以获取正确的属性,并将$ faker类传递给它。它位于框架中的here。看起来像这样:

$definition = call_user_func(
    $this->definitions[$this->class],
    $this->faker, $attributes
);

虽然$ this-> faker被设置,当通过__construct()初始化FactoryBuilder时。可以看到here


0
投票

变量$factory未在文件本身中定义。仅当Laravel处理此文件(最有可能通过包含该文件)时,$ factory才会引用Factory对象。

请注意文件开头的docblock:

/** @var \Illuminate\Database\Eloquent\Factory $factory */

它可以帮助您的IDE自动完成。

© www.soinside.com 2019 - 2024. All rights reserved.