Я хочу создать пользовательский поставщик для Faker в Laravel (например, один для случайного имени здания).
Где я могу хранить пользовательский поставщик в своем приложении и как его использовать?
Вы должны использовать php artisan
для создания настраиваемого поставщика …
В командной строке перейдите к корню вашего приложения и введите …
php artisan make:provider FakerServiceProvider
Это должно создать нового поставщика в папке app/Providers
. Вот как выглядит моя функция регистров, например, в примере с файлами 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, вам, скорее всего, нужно будет создать новый файл с новым классом провайдера и передать его. Убедитесь, что вы также добавили этого нового поставщика в ваш массив providers
в app/config.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;