PHP: как сделать так, чтобы аргумент мог принять только одно из определённых значений?

Предположим, что у нас есть

function some ($arg) {}

И логика такова, что в качестве значения $arg ожидается одно из следующих значений: "foo", "bar", "baz".

Самый простой вариант, который приходит в голову:

if ($arg != "foo" && $arg != "bar" && $arg != "baz") { ... }


Но насколько адекватным это решение является? Мне почему-то кажется, что должно существовать какое-то более грамотное решение.

Я знаю про существование такой вещи, как enum, но не знаю, стоит ли использовать его в данной ситуации? Если у нас двадцать подобных методов, то нужно будет сделать двадцать enum, и это лишь один класс. Не сделает ли это код слишком громоздким?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Мне почему-то кажется, что должно существовать какое-то более грамотное решение.

Возможно, вот такое:
if(in_array($arg, ['foo', 'bar', 'baz'])) {
    // ...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Или такое:
if (preg_match('/^(?:foo|bar|baz)$/', $arg) {
  // ...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы