Дополнительные проверки в конструкциях switch/case по регулярным выражениям

Оператор switch в своих секциях case использует лишь нестрогое сравнение == переменных. Но как быть, если в секции нужно получить результат от работы регулярки и сверить его не выходя из конструкции? Например, у нас есть типичный «роутер» в index.php распределяющий, какие файлы включаем в работу скрипта на основании переменной $path

Но представим, что категорий у нас сотни или вообще неизвестное множество. Выйти из конструкции switch и прописать условия ниже — не вариант, т.к. теряем дефолтную логику. Прописывать условия выше — такой себе вариант, поскольку, чем «тяжелее» становятся проверки, тем ниже они должны следовать в коде, нужно чтобы интерпретатор добирался до сложного кода и обрабатывал его как можно реже.

Решить эту задачу можно при помощи функции preg_filter

Важно понимать, что секция case должна получить именно результат равный $path , в данном случае это строка. А preg_filter как раз возвращает строку лишь в том случае, если найдено совпадение(либо вернет null).

Оставить комментарий

Ваш адрес email не будет опубликован.