Well, the best option is to look at the Zend_Form code :
public function isValid($data) { if (!is_array($data)) { require_once 'Zend/Form/Exception.php'; throw new Zend_Form_Exception(__METHOD__ . ' expects an array'); } $translator = $this->getTranslator(); $valid = true; $eBelongTo = null; if ($this->isArray()) { $eBelongTo = $this->getElementsBelongTo(); $data = $this->_dissolveArrayValue($data, $eBelongTo); } $context = $data; foreach ($this->getElements() as $key => $element) { if (null !== $translator && $this->hasTranslator() && !$element->hasTranslator()) { $element->setTranslator($translator); } $check = $data; if (($belongsTo = $element->getBelongsTo()) !== $eBelongTo) { $check = $this->_dissolveArrayValue($data, $belongsTo); } if (!isset($check[$key])) { $valid = $element->isValid(null, $context) && $valid; } else { $valid = $element->isValid($check[$key], $context) && $valid; $data = $this->_dissolveArrayUnsetKey($data, $belongsTo, $key); } } foreach ($this->getSubForms() as $key => $form) { if (null !== $translator && !$form->hasTranslator()) { $form->setTranslator($translator); } if (isset($data[$key]) && !$form->isArray()) { $valid = $form->isValid($data[$key]) && $valid; } else { $valid = $form->isValid($data) && $valid; } } $this->_errorsExist = !$valid;
which means in a nutshell, Zend_Form will Zend_Form over all configured elements in the form and compare them with the values ββin the array that you passed to it. If there is a match, it will check this individual value for configured validators.
source share