Chcę utworzyć niestandardowego dostawcę dla Fakera w Laravel (np. Dla losowej nazwy budynku).Jak wdrożyć własnego dostawcę Fakera w Laravel
Gdzie przechowywać niestandardowego operatora w mojej aplikacji i jak z niego korzystać?
Chcę utworzyć niestandardowego dostawcę dla Fakera w Laravel (np. Dla losowej nazwy budynku).Jak wdrożyć własnego dostawcę Fakera w Laravel
Gdzie przechowywać niestandardowego operatora w mojej aplikacji i jak z niego korzystać?
Należy użyć php artisan
wygenerować dostawcy niestandardowego ...
W wierszu polecenia przejdź do katalogu głównego aplikacji i rodzaju ...
php artisan make:provider FakerServiceProvider
To powinno wygenerować nowy provider w folderze app/Providers
. Oto, jak wygląda moja funkcja rejestru, wychodząc z przykładu w dokumentacji fakera.
/**
* 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;
});
}
Używam tutaj anonimowej klasy. Jeśli masz php < 7, prawdopodobnie będziesz musiał utworzyć nowy plik z nową klasą dostawcy i przekazać to. Upewnij się, że dodajesz nowego dostawcę do swojej macierzy providers
w app/config.php
.
Teraz to zarejestrowany, można pobrać nową klasę faker używając następujących ...
$faker = app('Faker');
echo $faker->title;
Dodatkowo, jeśli przejść przez docs w https://laravel.com/docs/5.2/facades powinien również być w stanie dokonać Faker
fasadę dość z łatwością. Wszystkie ciężkie uniesienia są wykonywane, musisz tylko utworzyć nową klasę fasadową, mieć getFacadeAccessor
return 'Faker'
i dodać ją do swojej tablicy facades
w app/config.php
.
Następnie można po prostu używać go tak jak ...
echo Faker::title;
miałem '$ fabrycznie> define (App \ User :: klasa, function (Faker \ Generator $ faker) {...' w fabrykach, więc zmieniłem nazwę wiążącą na "Faker \ Generator" –
@ x-yuri Czy mógłbyś być bardziej precyzyjny odnośnie tego, co zrobiłeś? Mam podobne wymagania do mojego projektu –
@ rap-2-h Z tego co mogę rozumiem, prawdopodobnie miałem na myśli, że kod w odpowiedzi wiąże się z klasą "Faker" ('$ this-> app-> singleton (" Faker "...), ale ponieważ miałem' Faker \ Generator' w 'bazie danych/factory', prawdopodobnie zobowiązałem się do 'Faker \ Generator', aby użyć dodatkowych formaterów (" title "w tym przypadku) –