2016-07-07 15 views

Trả lời

9

Bạn nên sử dụng php artisan để tạo ra các nhà cung cấp tùy chỉnh ...

Trên dòng lệnh, điều hướng đến thư mục gốc của ứng dụng và loại của bạn ...

php artisan make:provider FakerServiceProvider 

Điều đó sẽ tạo ra một nhà cung cấp mới trong thư mục app/Providers. Dưới đây là những gì chức năng đăng ký của tôi trông giống như đi ra khỏi ví dụ trong tài liệu giả mạo.

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

Tôi đang sử dụng một lớp ẩn danh tại đây. Nếu bạn có php < 7, bạn có thể cần phải tạo một tệp mới với lớp nhà cung cấp mới của bạn và chuyển nó vào. Đảm bảo bạn cũng thêm nhà cung cấp mới này vào mảng providers của mình trong app/config.php.

Bây giờ nó được đăng ký, bạn có thể lấy lớp kẻ giả mạo mới của bạn bằng cách sử dụng sau đây ...

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

Ngoài ra, nếu bạn đi qua các tài liệu tại https://laravel.com/docs/5.2/facades bạn cũng sẽ có thể làm cho một mặt tiền Faker khá dễ dàng. Tất cả việc nâng hạng nặng được thực hiện, bạn chỉ cần tạo lớp mặt tiền mới, có getFacadeAccessor trả lại 'Faker' và thêm nó vào mảng facades của bạn trong app/config.php.

Sau đó, bạn chỉ có thể sử dụng nó như vậy ...

echo Faker::title; 
+0

tôi đã '$ factory-> define (App \ User :: class, function (Faker \ Generator $ kẻ giả mạo) {...' trong các nhà máy, vì vậy tôi đã đổi tên liên kết thành 'Faker \ Generator' –

+0

@ x-yuri Bạn có thể chính xác hơn về những gì bạn đã làm không? Tôi có một yêu cầu tương tự cho dự án của tôi –

+0

@ rap-2-h Từ những gì tôi có thể xem, tôi có thể có nghĩa là, mã trong câu trả lời liên kết với lớp 'Faker' (' $ this-> app-> singleton ('Faker' ... '). Nhưng vì tôi có' Faker \ Generator' trong cơ sở dữ liệu '/factories', tôi có thể ràng buộc với 'Faker \ Generator' để sử dụng thêm các trình định dạng (' tiêu đề' trong trường hợp này). –

Các vấn đề liên quan