Kortgeleden was ik op zoek naar een manier op een Enum te gebruiken binnen PHP. Echter bestaat er binnen PHP geen enum. Het was tijd om mijn eigen versie van enum te gaan schrijven voor PHP.

Wat is PHP Enum Class?

Laten we beginnen wat een enum is. Een enum is een enumeratie of opsomming. Bij het definiëren van de enum maak je een lijst met waardes die geaccepteerd worden. Als voorbeeld heb je in je enum aangegeven dat A en B geldig zijn en vervolgens wil je waarde C gebruiken dan word deze actie geblokkeerd. Waarde C staat namelijk niet in je voorgedefinieerde lijst.

Hoe gebruik ik de Enum Class?

Het gebruik van mijn enum class is eenvoudig. Je zorgt ervoor dat de class Enum is inladen via Namespace of een include. Hierna gebruik je de class op de onderstaande manier en je bent klaar.

// Goed
$enum = new Enum(['a', 'b']);
$enum->set('a');
echo $enum; // a

// Faalt en geef een foutmelding
$enum = new Enum(['a', 'b']);
$enum->set('c'); // Fatal Exception

// Faalt, maar toont geen foutmelding
$enum = new Enum(['a', 'b'], Enum::MODE_LOOSE);
$enum->set('c');
echo $enum; // ''

Zoals je in bovenstaande voorbeeld kan zien heeft de Enum class twee modussen. De strenge variant die een foutmelding geeft wanneer er een foutieve waarde wordt opgegeven. En de losse modus welk geen foutmelding geef, maar wel een lege string teruggeeft.

Wanneer gebruik ik de Enum Class?

Nu hoor ik gelijk de vraag wanneer je deze class moet gebruiken. Want ik hoor je namelijk denken dat je het bovenstaande ook gewoon met een simpele in_array() kan doen.

$result = in_array('a', ['a','b']) ? 'a' : '';

Dat is gedeeltelijk waar, echter wanneer je een Enum in combinatie van classses of functies wilt gaan gebruiken is een striktere manier van coderen toch aanbevolen. Een functie mag namelijk nooit een andere waarde ontvangen dan je voorgedefinieerd. En met behulp van mijn Enum class is dit precies wat je bereikt.

$enum = new Enum(['a', 'b']);
$enum->set('a');

function (Enum $enum) {
    echo $enum;
}

Waar kan ik Enum Class downloaden?

De PHP code van deze Enum class is terug te vinden op GitHub via onderstaande knop.

Mocht je nog verdere vragen of tips hebben zijn deze altijd welkom. En mocht je toevallig geïnteresseerd zijn in meer PHP gerelateerde onderwerpen vind je deze hier.

Vond je dit een leuk blog artikel dan is een reactie altijd welkom: Klik hier om een reactie achter te laten.

Abonneer je op dit blog d.m.v. e-mail

Meld je hieronder aan met jouw e-mailadres en ontvang als eerste een mailtje wanneer er een nieuw artikel online gaat op mijn blog.