如何在Laravel中实现自己的Faker提供程序
2022-08-30 22:45:14
我想在Laravel中为Faker创建自定义提供程序(例如,一个随机建筑物名称)。
自定义提供程序在应用程序中的什么位置存储,如何使用它?
我想在Laravel中为Faker创建自定义提供程序(例如,一个随机建筑物名称)。
自定义提供程序在应用程序中的什么位置存储,如何使用它?
您应该 使用 来生成自定义提供程序...php artisan
在命令行上,导航到应用的根目录,然后键入...
php artisan make:provider FakerServiceProvider
这应该会在文件夹中生成一个新的提供程序。以下是我的寄存器函数在faker文档中的示例中的样子。app/Providers
/**
* 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,你可能需要用你的新提供者类创建一个新文件,然后把它传递进去。请确保还将此新提供程序添加到 中的阵列中。providers
config/app.php
现在它已经注册,您可以使用以下内容获取新的faker类...
$faker = app('Faker');
echo $faker->title;
此外,如果您浏览 https://laravel.com/docs/5.2/facades 的文档,则还应该能够非常轻松地制作外观。所有繁重的工作都已完成,您只需要创建新的 façade 类,返回 ,然后将其添加到 中的数组中。Faker
getFacadeAccessor
'Faker'
facades
app/config.php
然后,您可以像这样简单地使用它...
echo Faker::title;
创建自定义提供程序类并将其保存在 app/Faker/CustomProvider.php 下。法典:
namespace App\Faker;
use Faker\Provider\Base;
class CustomProvider extends Base
{
public function customName()
{
return $this->generator->sentence(rand(2, 6));
}
}
然后,您只需通过addProvider方法将自定义提供程序添加到faker即可。添加自定义提供程序的 laravel 工厂示例:
<?php
use Faker\Generator as Faker;
$factory->define(App\Models\Model::class, function(Faker $faker) {
$faker->addProvider(new App\Faker\CustomProvider($faker));
return [
'name' => $faker->customName,
];
});