2016-07-07 64 views

回答

9

您應該使用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,那麼您可能需要用新的提供者類創建一個新文件,並將其傳入。確保您還將此新提供者添加到app/config.phpproviders數組中。

現在,它的註冊,可以使用下面的抓住你的新攤販類...

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

此外,如果你去通過在https://laravel.com/docs/5.2/facades的文檔,你也應該能夠做出Faker門面相當容易。所有繁重的工作都完成了,您只需創建新的門面類,​​返回'Faker',並將其添加到app/config.phpfacades陣列中。

然後,你可以簡單地使用它是這樣的...

echo Faker::title; 
+0

我有'$廠 - >定義程序(App \用戶::類,函數(法克爾\ $發電機攤販){...'在工廠,所以我把綁定名改爲'Faker \ Generator'。 –

+0

@ x-yuri你能更準確地知道你做了什麼嗎?我對我的項目有類似的要求 –

+0

@ rap-2-h從我所能請參閱我的意思,答案中的代碼綁定到'Faker'類('$ this-> app-> singleton('Faker'...')。但是因爲我在數據庫中有'Faker \ Generator'/factories',我可能會綁定到'Faker \ Generator'來使用額外的格式化程序(在這種情況下是'title') –

相關問題