Skip to content

Instantly share code, notes, and snippets.

@JoshuaDoshua
Last active November 4, 2022 04:37
Show Gist options
  • Save JoshuaDoshua/2815e101c0735ac9b833207ffce9ca8e to your computer and use it in GitHub Desktop.
Save JoshuaDoshua/2815e101c0735ac9b833207ffce9ca8e to your computer and use it in GitHub Desktop.
Weekday FlaggedEnum for BemSampo/Laravel-Enum
<?php
namespace App\Enums;
use BenSampo\Enum\FlaggedEnum;
final class Day extends FlaggedEnum
{
const Monday = 1 << 0;
const Tuesday = 1 << 1;
const Wednesday = 1 << 2;
const Thursday = 1 << 3;
const Friday = 1 << 4;
const Saturday = 1 << 5;
const Sunday = 1 << 6;
// Shortcuts
const Weekdays = self::Monday | self::Tuesday | self::Wednesday | self::Thursday | self::Friday;
const Weekend = self::Saturday | self::Sunday;
}
@JoshuaDoshua
Copy link
Author

JoshuaDoshua commented Apr 1, 2022

Allows for storing multiple days in a single database column. ($table->unsignedTinyInteger('day'); should suffice)

$activeDays = new Day([Day::Monday, Day::Wednesday, Day::Friday]);

$activeDays; // 21
$activeDays->hasFlag(Day::Monday); // true
$activeDays->hasFlag(Day::Tuesday); // false

$activeDays->getFlags(); // [Day::Monday(), Day::Wednesday(), Day::Friday()]

// shortcuts
Day::Weekend; // 96
Day::Weekend()->getFlags(); // [Day::Saturday(), Day::Sunday(), Day::Weekend()]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment