우선, 이것을 과도하게 복제하지 마십시오. 제 생각에, 코드는 객체 지향 설계 패턴의 사용을 정당화하기에 충분히 복잡하지 않습니다.
내가 보았 듯이, 당신의 코드는 기본적으로 다른 일반 표현식으로 입력을 검증하기 위해 요약됩니다 (일부 사용자 지정된 플래그에 따라 다릅니다. allow_num
그리고 allow_space
.
그래서 내 제안은 다음과 같습니다 (기본 리팩토링은 이전 구성을 기반으로 정규 표현식의 일부를 구성합니다. 사용 유효성 검사 로직 에서이 표현식) :
protected function isTextValid() {
$allowedCharacters = 'A-Za-z';
if ($this->data['allow_spaces']) {
$allowedCharacters .= '\s';
}
if ($this->data['allow_num']) {
$allowedCharacters .= '\d';
}
if (!preg_match("#^[{$allowedCharacters}]+\$#", $this->value)) {
$this->messages = foo ? foor : bar;
return false;
}
return true;
}