First of all, look at this link
Basically, the default Lorem provider that comes with the library is very limited when generating unique words. The internal lorem-ipsum words-list comes with 182 unique words only.
This provider does just one thing: It extends the default Lorem provider, and changes the word-list with English words (I got the dictionary from here, I removed a couple of lines however), which contain about 400k words.
$ composer require --dev breda/faker-provider-english-words
// Assuming everything is auto-loaded
// Create faker
$faker = Faker\Factory::create();
// Just make sure the default Lorem provider is not added after this.
$faker->addProvider(new BReda\Faker\Provider\EnglishWords($faker));
This will throw this exception Fatal error: Uncaught OverflowException: Maximum retries of 10000 reached without finding a unique value
// Create faker
$faker = Faker\Factory::create();
foreach(range(0, 2000) as $i) {
echo $faker->unique()->word;
}
This will not throw an exception and will successfully print 200,000 unique words from the English language.
// Create faker
$faker = Faker\Factory::create();
$faker->addProvider(new BReda\Faker\Provider\EnglishWords($faker));
foreach(range(0, 200000) as $i) {
echo $faker->unique()->word;
}
And that's it!