まず第一に、これを過度に複雑にしないようにしてください。私の意見では、コードはオブジェクト指向の設計パターンの使用を正当化するほど複雑ではありません。
私が見るように、あなたのコードは基本的に異なる正規表現で入力を検証することに要約します(これは、ユーザー指定のフラグに依存します。 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;
}