enum в PHP

Часто приходится иметь дело с определённым набором значений-параметров, которые можно передать какому-либо методу. Многие просто используют для этого строковые значения:

class Rights {
    function check($role, User $user) {
        return $user->role == $role;
    }
}

Rights::check('adminisrator', $me);

Как видно из примера выше, ошибиться довольно легко, а вот ошибку найти будет довольно сложно.

Одно из возможных решений — завести псевдо-enum класс Roles:

class Roles {
    const ADMINISTATOR = 'administrator';
    const USER = 'user';
}

class Rights {
    function check($role, User $user) {
        return $user->role == $role;
    }
}

Теперь вызов метода будет выглядеть так:

Rights::check(Roles::ADMINISTATOR, $me);

Записи