Install via Composer:
composer require apoutchika/loremipsum-bundle:dev-master
Enable the Bundle in config/bundles.php (Laravel 5.4+):
return [
// ...
Apoutchika\LoremIpsumBundle\ApoutchikaLoremIpsumBundle::class => ['all' => true],
];
(For older Symfony/Laravel versions, register in AppKernel.php as shown in the README.)
First Use Case: Generate placeholder text in a controller:
use Apoutchika\LoremIpsumBundle\LoremIpsum\LoremIpsum;
public function generatePlaceholder()
{
$lorem = app(LoremIpsum::class);
$paragraphs = $lorem->getParagraphs(2); // 2 random paragraphs
return response()->json(['placeholder' => $paragraphs]);
}
Dynamic Placeholder Generation:
$lorem = app(LoremIpsum::class);
$user = new User([
'name' => $lorem->getWords(1),
'bio' => $lorem->getParagraphs(1),
]);
Factory for fake data:
use Apoutchika\LoremIpsumBundle\LoremIpsum\LoremIpsum;
$factory->define(User::class, function (Faker $faker) {
$lorem = app(LoremIpsum::class);
return [
'name' => $lorem->getWords(1),
'email' => $faker->unique()->safeEmail,
];
});
Twig Integration (if using Symfony’s Twig):
<p>{{ paragraphs(1, 3) }}</p> {# 1-3 paragraphs #}
<span>{{ words(5) }}</span> {# 5 words #}
Custom Lorem Ipsum:
$lorem = app(LoremIpsum::class);
$lorem->setLoremIpsum('Tech Startup Inc'); // Replace default text
$companyName = $lorem->getWords(2); // "Tech Startup"
Seeding Databases:
DatabaseSeeder:
$lorem = app(LoremIpsum::class);
for ($i = 0; $i < 10; $i++) {
DB::table('posts')->insert([
'title' => $lorem->getWords(3),
'content' => $lorem->getParagraphs(2),
]);
}
Service Container Confusion:
app() vs. Symfony’s get():
// Laravel (correct):
$lorem = app(LoremIpsum::class);
// Symfony (legacy, may fail in Laravel):
$lorem = $this->get('apoutchika.lorem_ipsum');
AppServiceProvider:
public function register()
{
$this->app->bind('apoutchika.lorem_ipsum', function () {
return new \Apoutchika\LoremIpsumBundle\LoremIpsum\LoremIpsum();
});
}
Twig Template Errors:
AppServiceProvider:
use Apoutchika\LoremIpsumBundle\Twig\LoremIpsumExtension;
public function boot()
{
$this->app['twig']->addExtension(new LoremIpsumExtension());
}
Randomness Control:
rand(), which is not cryptographically secure but sufficient for placeholders.mt_srand(1234); // Seed before generating
$paragraphs = $lorem->getParagraphs(1);
Performance:
$cacheKey = 'lorem_paragraphs_'.md5('user_bio');
$paragraphs = Cache::remember($cacheKey, 60, function () use ($lorem) {
return $lorem->getParagraphs(1);
});
Extending Functionality:
class CustomLoremIpsumService {
protected $lorem;
public function __construct(LoremIpsum $lorem)
{
$this->lorem = $lorem;
}
public function getUserBio()
{
return $this->lorem->getParagraphs(2);
}
}
Register it in AppServiceProvider:
$this->app->bind(CustomLoremIpsumService::class, function ($app) {
return new CustomLoremIpsumService($app->make(LoremIpsum::class));
});
Testing:
$mockLorem = Mockery::mock(LoremIpsum::class);
$mockLorem->shouldReceive('getWords')->andReturn('Test User');
$this->app->instance(LoremIpsum::class, $mockLorem);
Configuration:
config/services.php (if the bundle supports it).config/ directory, so direct service binding is recommended for customization.Debugging:
php artisan container:list | grep lorem
config/bundles.php.How can I help you explore Laravel packages today?