<?php
/**
* Provides validator abstract with basic error message handling.
*
* @copyright 2011 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
namespace P4\Validate;
abstract class AbstractValidate implements ValidateInterface
{
protected $value = null;
protected $messages = array();
protected $messageTemplates = array();
/**
* Get errors for the most recent isValid() check.
*
* @return array list of error messages.
*/
public function getMessages()
{
return $this->messages;
}
/**
* Get the message templates for this validator.
*
* @return array list of error message templates.
*/
public function getMessageTemplates()
{
return $this->messageTemplates;
}
/**
* Record an error detected during validation.
* Replaces '%value%' with the value being validated.
*
* @param string $messageKey the id of the message to add.
*/
protected function error($messageKey)
{
if (!array_key_exists($messageKey, $this->messageTemplates)) {
throw new \InvalidArgumentException(
"Cannot set error. Invalid message key given."
);
}
// support %value% substitution.
$value = is_object($this->value)
? get_class($this->value)
: $this->value;
$message = $this->messageTemplates[$messageKey];
$message = str_replace(
'%value%',
is_array($value) ? 'Array' : (string) $value,
$message
);
$this->messages[$messageKey] = $message;
}
/**
* Sets the value being validated and clears the messages.
*
* @param mixed $value the value being validated.
*/
protected function set($value)
{
$this->value = $value;
$this->messages = array();
}
}