PHP code example of skywalker-labs / enum

1. Go to this page and download the library: Download skywalker-labs/enum 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/ */

    

skywalker-labs / enum example snippets


use Skywalker\Enum\AbstractEnum;

/**
 * @method static self MONDAY()
 * @method static self TUESDAY()
 * ...
 */
final class WeekDay extends AbstractEnum
{
    protected const MONDAY = null;
    protected const TUESDAY = null;
    // ...
}

// Choose between 'name', 'value', or 'object'
AbstractEnum::$jsonMode = 'object';

echo json_encode(WeekDay::MONDAY());
// Output: {"name":"MONDAY","value":null,"label":"MONDAY","ordinal":0}

$day = WeekDay::from('MONDAY');     // Throws exception if not found
$day = WeekDay::tryFrom('INVALID'); // Returns null if not found

$randomDay = WeekDay::random();

echo WeekDay::MONDAY()->lowerName(); // "monday"
echo WeekDay::MONDAY()->camelName(); // "Monday"

$set = EnumSet::allOf(WeekDay::class);

$weekends = $set->filter(fn($d) => $d->isAnyOf([WeekDay::SATURDAY(), WeekDay::SUNDAY()]));
$names = $set->map(fn($d) => $d->name());

$first = $set->first(); // MONDAY
$last = $set->last();   // SUNDAY

$day = WeekDay::MONDAY();
$next = $day->next();         // TUESDAY
$prev = $day->previous();     // null

if ($day->isBefore(WeekDay::FRIDAY())) {
    echo "Hang in there!";
}

$workDays = EnumSet::range(WeekDay::MONDAY(), WeekDay::FRIDAY());
$holidays = EnumSet::of(WeekDay::class, WeekDay::MONDAY());

$actualWork = $workDays->diff($holidays);
$allDays = $workDays->union($holidays);
$intersect = $workDays->intersect($holidays);
$restOfYear = $workDays->complement();

$day = WeekDay::fromNameInsensitive('monday'); // Returns MONDAY instance

// Returns ['MONDAY' => 'MONDAY', 'TUESDAY' => 'TUESDAY', ...]
$options = WeekDay::toArray();

if ($day->isAnyOf([WeekDay::SATURDAY(), WeekDay::SUNDAY()])) {
    echo "It's the weekend!";
}

$mask = $set->toBitmask(); // integer e.g. 5
$restored = EnumSet::fromBitmask(WeekDay::class, $mask);