Prima di tutto, cerca di non completarlo in modo eccessivo. A mio avviso, il codice non è abbastanza complesso da giustificare l'uso di modelli di progettazione orientati agli oggetti.
A quanto pare allow_num
e allow_space
.
Quindi il mio suggerimento è il seguente (il refactoring di base sta costruendo parte dell'espressione regolare in base alla configurazione prima usando Questa espressione in qualsiasi logica di convalida):
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;
}