2016-07-07 9 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가 < 인 경우 새 공급자 클래스로 새 파일을 만들고이를 전달해야 할 가능성이 높습니다.이 새로운 공급자를 providers 배열에 app/config.php에 추가해야합니다. 이제이 등록되어 있음을

, 당신은 https://laravel.com/docs/5.2/facades의 문서를 통해 이동하는 경우도 Faker 외관을 확실히 할 수 있어야한다, 또한 ... 다음 사용

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

을 새 사기꾼 클래스를 잡을 수 있습니다 용이하게. 모든 무거운 짐을 싣고, 당신은 단지 getFacadeAccessor 반환 'Faker', 가지고 있고 facades 배열에 app/config.php에 추가해야 새로운 외관 수업을 만들어야 겠어.

그럼 당신은 단순히 ...과 같이

echo Faker::title; 
+0

를 사용할 수 있습니다 내가 가진'$ 공장 -> 정의 (응용 프로그램 \ 사용자 : 클래스, 기능 (위조자 \ 발전기 $의 사기꾼) {...' 공장에서, 나는 바인딩 이름을'Faker \ Generator'로 바 꾸었습니다. –

+0

@ x-yuri 당신이 한 일에 대해 더 정확하게 말할 수 있습니까? 내 프로젝트와 비슷한 요구 사항이 있습니다. –

+0

@ rap-2-h 할 수있는 것부터 아마도 응답의 코드가'Faker' 클래스 ('$ this-> app-> singleton ('Faker'...'))에 바인딩된다는 것을 의미했을 것입니다. 그러나''Faker \ Generator''가''database/factories'에서'Faker \ Generator'를 사용하여 여분의 포맷터 (이 경우'title')를 사용할 수 있습니다. –