【问题标题】:How does a Laravel factory gets the $factory variable defined?Laravel 工厂如何定义 $factory 变量?
【发布时间】:2020-09-25 00:23:10
【问题描述】:

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 对象中按预期结果

【问题讨论】:

    标签: php laravel factory


    【解决方案1】:

    变量$factory 未在文件本身中定义。只有当 Laravel 处理这个文件时,通过在加载过程中包含它,$factory 才会引用 Factory 对象。

    这是加载工厂文件的地方:\Illuminate\Database\Eloquent\Factory::load

    请注意工厂文件开头的 docblock,它可以帮助您的 IDE 自动完成:

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

    现在你可能想知道Factory::load() 第一次被调用的地方。它会在 DI 容器首次实例化 Factory 时调用,例如使用 factory() 帮助器。

    【讨论】:

    • 何时以及如何调用此加载函数?
    • 还是不明白,那factory()是哪里来的?我查看了 app.php 中的服务提供者列表,只有 DatabaseServiceProvider 被加载在那里,据我所知,它没有注册 $factory
    • factory() 辅助函数在 helpers.php 文件中定义。答案中有一个链接。
    猜你喜欢
    • 2021-04-19
    • 2015-09-19
    • 2022-11-28
    • 2019-06-07
    • 2019-11-11
    • 2019-07-29
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多