Porque asi separo todos los "componentes" que mi clase implementa como Textboxes, Textareas, Input Fields, HTML Areas, Date Picker, Color Picker, Select Box, SQL Select Box, etc. Al tener todas separadas es mas facil de leer en el codigo.
Los validadores "superiores" solo son interfaces que implementan los validadores reales, esto hace que tu puedas hacer validadores "on the fly" y que funcionen con la clase:
Código PHP:
class GeckoFormFieldValidatorEmpty implements GeckoFormFieldValidatorInterface {
private $canBeEmpty = false;
public function __construct($canBeEmpty) {
$this->canBeEmpty = $canBeEmpty;
}
public function validate(GeckoFormFieldInterface $field) {
$value = $field->getValue();
$isEmpty = empty( $value );
return $this->canBeEmpty && $isEmpty;
}
}
Aunque todavia le estoy moviendo mucho al codigo, como te comento esta en Beta, no es ni para produccion ni mucho menos y ando viendo como hacerlo lo mas sencillo, ya que la clase tambien implementa validacion en el cliente (via Javascript), pero desde PHP. Es decir, tu con solo crear el codigo PHP, la clase te hace los validadores en Javascript.
Saludos.