Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nicknames Laravel Package

yooper/nicknames

Laravel package for generating and managing nicknames in your app. Provides simple APIs to create unique, friendly aliases for users or records, with easy integration into existing models and workflows.

View on GitHub
Deep Wiki
Context7

Getting Started

Start by installing the package via Composer: composer require yooper/nicknames. As the last release was in 2017, verify compatibility with your Laravel version (tested up to Laravel 5.5–5.8). After installation, publish the config file (php artisan vendor:publish --provider="Yooper\Nicknames\NicknamesServiceProvider"), then open config/nicknames.php to review defaults. The most common first use case is generating clean, unique nicknames for new users—e.g., converting "John Doe" into "johndoe" or "john-doe".

The simplest programmatic usage is:

use Yooper\Nicknames\NicknameGenerator;

$generator = new NicknameGenerator();
$nickname = $generator->generate('Alice Johnson'); // e.g., 'alicejohnson'

Check src/NicknameGenerator.php and config/nicknames.php for immediate customization.

Implementation Patterns

  • Model Boot Hook Integration: Attach nickname generation in Eloquent model events (creating or saving) to auto-generate a unique nickname before persistence:
    public static function boot()
    {
        parent::boot();
        static::creating(function ($user) {
            if (!$user->nickname) {
                $user->nickname = app(NicknameGenerator::class)->generate($user->name);
            }
        });
    }
    
  • Custom Seed + Collision Handling: Use a seed array to influence generation order or fallbacks (e.g., prioritize first+last initial):
    $nickname = $generator->generate([
        'name' => 'Dr. Jane Smith',
        'seed' => 'jsmith',
        'maxAttempts' => 5,
    ]);
    
  • Middleware for URL Segments: Use nickname generation for clean profile URLs—generate and cache in a middleware before dispatching profile requests.
  • Custom Strategy Extension: Extend NicknameStrategy to enforce domain-specific rules (e.g., ban certain keywords, enforce length limits, prepend department codes). Register via config.

Gotchas and Tips

  • Outdated Dependency: The package has no recent updates—check for conflicts with Laravel 7+ due to deprecated Composer namespaces (e.g., Illuminate\Support\Str usage pre-6.x).
  • Collision Resolution Limit: Default tries maxAttempts (configurable) before throwing—always wrap generate() in a try/catch or fallback if uniqueness is critical.
  • Case Sensitivity Pitfalls: While the default sanitizer lowercases, ensure your database nickname column uses a case-insensitive collation (e.g., utf8mb4_general_ci) to avoid false uniqueness failures.
  • Extensibility via Hooks: Implement custom sanitizers by extending SanitizeStrategy, or override collision suffix logic by extending CollisionStrategy. Use config/nicknames.php to swap strategies without touching vendor code.
  • Testing Tip: Mock NicknameGenerator in unit tests—avoid real generation during tests to ensure deterministic behavior. Use ->generate('seed', ['dryRun' => true]) if the class supports it (check code).
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport