За исключением случаев, когда данный код не является частью какого-либо класса StatType и имеет внутреннее отношение к представлению состояний типа stat, мой ответ может немного упустить точку, но в любом случае здесь это так.
На самом деле вы делаете что-то не так, и вы просите найти способ обойти существенную проблему, с которой вы столкнулись. Вместо этого вам следует решить существенную проблему.
Существенная проблема заключается в том, что вам не хватает одного слоя абстракции, который будет находиться между тем, как вы представляете свой statType, и тем, как вы его используете.
Итак, ваша программа не должна заботиться о том, чтобы вы вызывали свой statType:
«ВСЕГО» или «ВСЕГО» или «Всего» или «Всего» * 1010 *
Вам нужно позаботиться о том, чтобы ваш statType находился в определенном состоянии в один момент выполнения программы. Как это представление состояния реализовано (строка с кавычками или числом) - это деталь реализации, и ваш оператор switch не должен заботиться об этом.
Что произойдет, если вы решите изменить свой statTypeName, например, без кавычек. Затем вам нужно будет перейти к каждой строке кода, которая зависит от нее, с кавычками, и изменить ее. Если бы вы каким-то образом скрыли детали реализации, вам не нужно было бы изменять более одной строки кода.
Может быть, один подход к настройке абстракции вокруг statTypes? (упрощено для ясности)
class StatType
{
const TOTAL = 0;
const VALUE = 1;
// etc.
}
switch ($statType->type()) {
case StatType::TOTAL:
echo "<br>TOTAL";
break;
case StatType::VALUE:
echo "<br>VALUE";
break;
}