<?php

class Vframe_Form_Element
{
  protected
    
$_sName '',
    
$_aFilters = array(),
    
$_aValidators = array();
  
  public function 
__construct($sName)
  {
    
$this->_sName $sName;
  }
  
  public function 
name()
  {
    return 
$this->_sName;
  }
  
  public function 
filter(Vframe_Filter $oInstance)
  {
    
$this->_aFilters[] = $oInstance;
    return 
$this;
  }
  
  public function 
validator(Vframe_Validator $oInstance$sMessage)
  {
    
$this->_aValidators[] = array('object' => $oInstance'message' => $sMessage);
    return 
$this;
  }
  
  public function 
execute()
  {
    
$sName $this->_sName;
    
$sValue Vframe::Input()->post->$sName;
    
    foreach(
$this->_aFilters as $oFilter)
      
$sValue $oFilter->execute($sValue);
    
    foreach(
$this->_aValidators as $aValidator)
      if(!
$aValidator['object']->check($sValue))
        
$sError $aValidator['message'];
    
    return array
    (
      
'value' => $sValue,
      
'error' => $sError,
    );
  }
}

?>