Si dovrebbe usare php artisan
per generare il provider personalizzato ...
Nella riga di comando, passare alla radice della vostra applicazione e tipo ...
php artisan make:provider FakerServiceProvider
Questo dovrebbe generare un nuovo fornitore nella cartella app/Providers
. Ecco come appare la mia funzione di registro come l'esempio dei documenti falsi.
/**
* 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;
});
}
Sto utilizzando una classe anonima qui. Se hai php < 7, probabilmente dovrai creare un nuovo file con la tua nuova classe di provider e inoltrarlo. Assicurati di aggiungere questo nuovo provider all'array providers
in app/config.php
.
Ora che è registrato, si può afferrare la nuova classe faker usando la seguente ...
$faker = app('Faker');
echo $faker->title;
Inoltre, se si passa attraverso i documenti a https://laravel.com/docs/5.2/facades si dovrebbe anche essere in grado di fare una facciata piuttosto Faker
facilmente. Tutto il lavoro pesante è fatto, devi solo creare la nuova classe di facciata, avere getFacadeAccessor
restituire 'Faker'
e aggiungerlo all'array facades
in app/config.php
.
Poi si può semplicemente utilizzare in questo modo ...
echo Faker::title;
avevo '$ fabbrica> define (App \ User :: classe, la funzione (Faker \ Generator $ falsario) {...' nelle fabbriche, quindi ho cambiato il nome vincolante in 'Faker \ Generator'. –
@ x-yuri Potresti essere più preciso su ciò che hai fatto? Ho un requisito simile per il mio progetto –
@ rap-2 -h Da quello che posso vedi, probabilmente intendevo, che il codice nella risposta si lega alla classe 'Faker' (' $ this-> app-> singleton ('Faker' ... '). Ma dato che avevo' Faker \ Generator' in 'database/factories', probabilmente mi sono legato a 'Faker \ Generator' per utilizzare formattatori extra (' title' in questo caso). –