php - 如何在 Laravel 中实现你自己的 Faker provider

标签 php laravel faker laravel-seeding

我想在 Laravel 中为 Faker 创建一个自定义提供程序(例如,一个用于随机建筑物名称的提供程序)。

我应该将自定义提供程序存储在我的应用程序中的什么位置以及如何使用它?

最佳答案

您应该使用 php artisan 来生成自定义提供程序...

在命令行上,导航到应用程序的根目录并键入...

php artisan make:provider FakerServiceProvider

这应该会在 app/Providers 文件夹中生成一个新的提供程序。这是我的 register 函数看起来像 faker 文档中的示例。

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
    $this->app->singleton('Faker', function($app) {
        $faker = \Faker\Factory::create();
        $newClass = new class($faker) extends \Faker\Provider\Base {
            public function title($nbWords = 5)
            {
                $sentence = $this->generator->sentence($nbWords);
                return substr($sentence, 0, strlen($sentence) - 1);
            }
        };

        $faker->addProvider($newClass);
        return $faker;
    });
}

我在这里使用匿名类。如果您的 php < 7,您可能需要使用新的提供程序类创建一个新文件并将其传入。确保您还将此新提供程序添加到 config 中的 providers 数组/app.php.

现在它已注册,您可以使用以下方法获取新的 faker 类...

$faker = app('Faker');
echo $faker->title;

此外,如果您浏览 https://laravel.com/docs/5.2/facades 处的文档你也应该能够很容易地制作一个 Faker 门面。所有繁重的工作都已完成,您只需创建新的外观类,让 getFacadeAccessor 返回 'Faker',并将其添加到您的 facades app/config.php 中的数组。

然后你可以像这样简单地使用它......

echo Faker::title;

关于php - 如何在 Laravel 中实现你自己的 Faker provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250776/

相关文章:

javascript - 根据其他图像的位置将图像旋转 90 度

html - 如何将多个页面的正文内容与固定的页眉和页脚分开

python - 为模型测试伪造语言环境字段

php - laravel 如何在静态方法中使用 $this 上下文?

php - 迁移速度非常慢

php - 在应该抛出 403 时抛出 404 响应

php - 如何确保 Laravel 5.5 正在运行测试?

laravel - 即使存在参数,Request::has() 也会返回 false

javascript - 如何使用 faker.date. Between faker.js

ruby-on-rails - 使用 FactoryGirl/Faker 生成 3 个字母的字符串