2016-07-07 33 views

cevap

9

Sen özel bir sağlayıcı oluşturmak için php artisan kullanmalıdır ... komut satırında

, uygulamanızda ve türüne köküne gidin ...

php artisan make:provider FakerServiceProvider 

yeni sağlayıcı oluşturması gerekir, app/Providers klasöründe. İşte kayıt işlevim, faker belgelerindeki örneklerden çıkmak gibi görünüyor.

/** 
* 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; 
    }); 
} 

Burada anonim bir sınıf kullanıyorum. Php < 7 varsa, yeni sağlayıcınızın sınıfı ile yeni bir dosya oluşturmanız ve bunu iletmeniz gerekir. Bu yeni sağlayıcısını app/config.php numaralı providers dizininize eklediğinizden emin olun. Şimdi kayıtlı olduğu

, size https://laravel.com/docs/5.2/facades de docs geçmesi halinde ayrıca bir Faker cephe oldukça yapmak gerekir, Ayrıca ... Aşağıdaki kullanarak

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

yeni faker sınıfını yakala kolayca. Tüm ağır kaldırma işlemleri tamamlandığında, sadece yeni cephe sınıfını oluşturmak zorundasınız,'Faker''a sahip olmanız ve app/config.php'daki facades dizinize eklemeniz gerekir.

Sonra sadece ... şöyle

echo Faker::title; 
+0

kullanabilirsiniz vardı '$ fabrikada> define (App \ Kullanıcı :: sınıf, fonksiyon (Faker \ Jeneratör $ numaracı) {...' fabrikalarda bu yüzden bağlayıcı adını "Faker \ Generator" olarak değiştirdim. –

+0

@ x-yuri Yaptığınız şey hakkında daha kesin olabilir misiniz? Projem için benzer bir gereksinim var –

+0

@ rap-2-h Muhtemelen kastediyorum, cevabın içindeki kod “Faker” sınıfına ('$ this-> app-> singleton'a ('Faker' ...') bağlanır. Fakat 'Faker \ Generator' veritabanında bulunduğundan beri/fabrikalar ', muhtemelen' Faker \ Generator 'için ekstra biçimlendiriciler kullanmak zorunda kaldım (bu durumda 'title'. –