LaravelPackages.net
Acme Inc.
Toggle sidebar
watson/nameable

Format names of users into full, familiar and abbreviated forms

11.197
29
4.1.0
About watson/nameable

watson/nameable is a Laravel package for format names of users into full, familiar and abbreviated forms. It currently has 29 GitHub stars and 11.197 downloads on Packagist (latest version 4.1.0). Install it with composer require watson/nameable. Discover more Laravel packages by watson or browse all Laravel packages to compare alternatives.

Last updated

nameable

Latest Version on Packagist Build Status Total Downloads

This package provides a caster and a formatter class for presenting your user's names. It can get a user's first, last or full name, their initials, and common abbreviations. Instead of separating the fields over a few database columns you can store a user's name in a single column and fetch what you need.

This package is based upon Basecamp's name_of_person package for Ruby/Rails.

Installation

You can install the package via Composer:

composer require watson/nameable

Then use the Nameable cast for any Eloquent models you want to use as a name.

use Watson\Nameable\Nameable;

class User extends Model
{
    protected $casts = [
        'name' => Nameable::class,
    ];
}

Alternatively, you can interact with the Name class directly.

use Watson\Nameable\Name;

$name = new Name('Dwight', 'Conrad Watson');

$name = Name::from('Dwight Conrad Watson');

Usage

$user = new User(['name' => 'Dwight Watson']);

$user->name->full        // Dwight Watson
$user->name->first       // Dwight
$user->name->last        // Watson
$user->name->familiar    // Dwight W. 
$user->name->abbreviated // D. Watson
$user->name->sorted      // Watson, Dwight
$user->name->initials    // DW

In addition there are possessive variants you can use which will work correctly with names that end in s.

$user = new User(['name' => 'Dwight Watson']);

$user->name->full_possessive        // Dwight Watson's
$user->name->first_possessive       // Dwight's
$user->name->last_possessive        // Watson's
$user->name->abbreviated_possessive // D. Watson's
$user->name->sorted_possessive      // Watson, Dwight's
$user->name->initials_possessive    // DW's

$user = new User(['name' => 'Angus Young']);
$user->name->full_possessive        // Angus Young's
$user->name->first_possessive       // Angus'

If a user doesn't provide a full name (for example, just a first name) the attributes will just omit the last name.

License

The MIT License (MIT). Please see License File for more information.

Star History Chart