PHP code example of splitstack / laravel-enum-friendly

1. Go to this page and download the library: Download splitstack/laravel-enum-friendly library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

splitstack / laravel-enum-friendly example snippets


use Splitstack\EnumFriendly\Traits\ExtendedEnum;

enum Status: string
{
  use ExtendedEnum;

  case ACTIVE = 'active';
  case INACTIVE = 'inactive';
}

// Returns Laravel Collection instead of array
Status::collect(); // Collection of ['active', 'inactive']
Status::toSelectOptions(); // Collection of select option arrays

Status::rules(['quired', 'string', 'in:active,inactive']

// Or get a Laravel Rule instance
Status::rule();
// Returns: Illuminate\Validation\Rules\Enum instance



use Splitstack\EnumFriendly\Traits\ExtendedEnum;

enum UserStatus: string
{
    use ExtendedEnum;

    case ACTIVE = 'active';
    case INACTIVE = 'inactive';
    case PENDING = 'pending';
    case SUSPENDED = 'suspended';
}

enum Priority: int
{
    use ExtendedEnum;

    case LOW = 1;
    case MEDIUM = 2;
    case HIGH = 3;
    case CRITICAL = 4;
}

enum Color
{
    use ExtendedEnum;

    case RED;
    case GREEN;
    case BLUE;
}

UserStatus::toTypeScript();
// Returns:
// [
//   'type' => 'UserStatus',
//   'values' => ['active', 'inactive', 'pending', 'suspended']
// ]

// Returns Laravel Collection of select options
UserStatus::toSelectOptions();
// Collection [
//   ['value' => 'active', 'label' => 'Active', 'name' => 'Active'],
//   ['value' => 'inactive', 'label' => 'Inactive', 'name' => 'Inactive'],
//   ['value' => 'pending', 'label' => 'Pending', 'name' => 'Pending'],
//   ['value' => 'suspended', 'label' => 'Suspended', 'name' => 'Suspended']
// ]

// Use in Blade templates
@foreach(UserStatus::toSelectOptions() as $option)
    <option value="{{ $option['value'] }}">{{ $option['label'] }}</option>
@endforeach

// In a Form Request
public function rules()
{
    return [
        'status' => UserStatus::rules(['riority' => ['

// Safe conversion - returns enum instance or null
$status = UserStatus::coerceEnum('active'); // Returns UserStatus::ACTIVE
$invalid = UserStatus::coerceEnum('invalid'); // Returns null

// With fallback
$status = UserStatus::fromValueOr('invalid', UserStatus::PENDING); // Returns UserStatus::PENDING

// Check if value exists
UserStatus::hasValue('active'); // Returns true
UserStatus::hasValue('invalid'); // Returns false

// Get enum values as a Collection for fluent operations
UserStatus::collect()
    ->filter(fn($status) => $status !== 'suspended')
    ->map(fn($status) => strtoupper($status))
    ->implode(', ');

// Get only specific cases
$activeCases = UserStatus::only(['ACTIVE', 'PENDING']);

// Exclude specific cases  
$nonSuspendedCases = UserStatus::except(['SUSPENDED']);

// Filter by values - returns array of values
$validStatuses = UserStatus::onlyValues(['active', 'pending']);

// Get random values for testing
$randomStatus = UserStatus::random(); // Returns a random value
$randomCase = UserStatus::randomCase(); // Returns a random enum instance

$status = UserStatus::ACTIVE;

$status->label(); // Returns 'Active'
$status->is('active'); // Returns true
$status->is(UserStatus::INACTIVE); // Returns false
$status->in(['active', 'pending']); // Returns true

// Custom descriptions (if you implement getDescription() method)
$status->description(); // Returns custom description or null

// Before
$values = array_column(MyEnum::cases(), 'value');

// After
$values = MyEnum::collect(); // Laravel Collection!
bash
php artisan split:enum Status --type=string active:ACTIVE inactive:INACTIVE