Второй вариант кажется лучшим решением. ИМХО, неприглядное дублирование кода сравнения, которое сопровождало бы методы первого решения, было бы для меня показом, например:
public function isStateOne() {
if(strcmp(ObjectMapper::STATE_ONE, '1') == 0) {
return true;
}
}
public function isStateTwo() {
if(strcmp(ObjectMapper::STATE_TWO, '2') == 0) {
return true;
}
}
public function isStateThree() {
if(strcmp(ObjectMapper::STATE_THREE, '3') == 0) {
return true;
}
}
Конечно, другие могут не согласиться. Мне просто не нравится, когда классы забиты "почти одинаковыми" методами.