首先,尽量不要过分简单。我认为,代码不够复杂,无法证明使用面向对象的设计模式的使用是合理的。
如我所见,您的代码基本上归结为验证具有不同正则表达式的输入(这取决于某些用户指定的标志,例如 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;
}