$validator) { $this->addToChain($key, $validator); } } /** * Adds a validator to the validation chain * * @param string $key * @param Phreamp_Validate_Interface $validator * @return Phreamp_Validate */ public function addToChain($key, Phreamp_Validate_Interface $validator) { $this->_validators[$key] = $validator; return $this; } /** * Checks if a validator is in the chain * * @param string|Phreamp_Validate_Interface $validator * @return boolean */ public function inChain($validator) { if (is_object($validator)) { return in_array($validator, $this->_validators); } else { return key_exists($validator, $this->_validators); } } /** * Removes a validator to the validation chain * * @param string|Phreamp_Validate_Interface $item * @return Phreamp_Validate */ public function removeFromChain($item) { if ($this->inChain($item)) { if (is_object($item)) { $key = array_search($item, $this->_validators); } else { $key = $item; } unset($this->_validators[$key]); } return $this; } /** * Starts the validation and returns the status. * * @param string $value * @param array $context * @return boolean */ public function isValid($value, array $context = array()) { $valid = true; $this->_messages = array(); foreach ($this->_validators as $key => $validator) { if (!$validator->isValid($value, $context)) { $valid = false; } $messages = $validator->getMessages(); if (count($messages)) { $this->_messages[$key] = $messages; } } return $valid; } /** * Gets any possible messages the validators might have returned. * * @param boolean $flat * @return array */ public function getMessages($flat = false) { if ($flat) { $m = array(); foreach ($this->_messages as $v) { foreach ($v as $message) { $m[] = $message; } } return $m; } else { return $this->_messages; } } }