baskooijmaninc/suzie
Laravel package providing Suzie-related helpers and integrations for your app. Includes service provider setup, configuration options, and utilities to simplify common tasks and streamline development workflows.
Installation
composer require baskooijmaninc/suzie
Publish the config file (if available):
php artisan vendor:publish --provider="BaskooijmanInc\Suzie\SuzieServiceProvider" --tag="suzie-config"
Basic Usage
Import the Suzie facade or class:
use BaskooijmanInc\Suzie\Facades\Suzie;
// Example: Generate a "friendly" name from an input
$friendlyName = Suzie::generate('JohnDoe123');
echo $friendlyName; // Output: "John Doe"
First Use Case
jane.doe_42) into readable formats (e.g., "Jane Doe").String Transformation
Use Suzie::generate() to convert strings into human-readable formats:
Suzie::generate('user_123_email@example.com')
// Output: "User Email"
Custom Rules Extend default behavior via config or service provider:
// config/suzie.php
'rules' => [
'separator' => '_',
'replace' => [
'123' => 'Number',
'admin' => 'Administrator',
],
],
Middleware Integration Auto-format usernames in middleware:
public function handle($request, Closure $next) {
$request->merge(['formatted_name' => Suzie::generate($request->name)]);
return $next($request);
}
Model Observers
Apply transformations on model events (e.g., retrieved):
public function retrieved(Post $post) {
$post->setAttribute('display_name', Suzie::generate($post->slug));
}
toArray():
public function toArray($request) {
return [
'name' => Suzie::generate($this->username),
];
}
$validated = $request->validate([
'username' => ['required', 'string', Rule::unique('users')->ignore($user)],
]);
$user->name = Suzie::generate($validated['username']);
Overwriting Config If publishing the config, ensure you merge custom rules instead of replacing:
// config/suzie.php
return array_merge(require __DIR__.'/suzie.php', [
'custom_rules' => [...],
]);
Performance
Avoid calling Suzie::generate() in tight loops (e.g., bulk operations). Cache results:
$cacheKey = "suzie_{$input}";
$formatted = Cache::remember($cacheKey, now()->addHours(1), fn() => Suzie::generate($input));
Edge Cases
null or empty strings:
Suzie::generate($input ?? 'default_name');
José_Ramírez to ensure proper handling.Suzie::setCallback(function ($input, $output) {
\Log::debug("Input: {$input} → Output: {$output}");
});
Custom Generators Register new generators in the service provider:
Suzie::extend('custom', function ($input) {
return strtoupper($input);
});
Usage:
Suzie::generate('test', 'custom'); // Output: "TEST"
Hooks Use events (if supported) to intercept transformations:
event(new \BaskooijmanInc\Suzie\Events\Generating($input));
Testing Mock the facade in tests:
$this->mock(Suzie::class)->shouldReceive('generate')->andReturn('Mocked Name');
How can I help you explore Laravel packages today?