From 986df503b6ae6b57d37d9873b475e84036ae6a9d Mon Sep 17 00:00:00 2001 From: Jurgen Van de Moere Date: Tue, 25 Sep 2012 11:06:56 +0200 Subject: [PATCH] Add new validator to check if input is instance of a certain class Change-Id: I6365cf9a6652ca42a1f6897002e5abe455ed4f44 --- library/Zend/Validator/IsInstanceOf.php | 112 ++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 library/Zend/Validator/IsInstanceOf.php diff --git a/library/Zend/Validator/IsInstanceOf.php b/library/Zend/Validator/IsInstanceOf.php new file mode 100644 index 00000000000..77455479089 --- /dev/null +++ b/library/Zend/Validator/IsInstanceOf.php @@ -0,0 +1,112 @@ + "The input is not an instance of '%className%'" + ); + + /** + * Additional variables available for validation failure messages + * + * @var array + */ + protected $messageVariables = array( + 'className' => 'className' + ); + + /** + * Class name + * + * @var string + */ + protected $className; + + /** + * Sets validator options + * + * @param array|Traversable $options + * @throws Exception\InvalidArgumentException + */ + public function __construct($options = null) + { + if ($options instanceof Traversable) { + $options = ArrayUtils::iteratorToArray($options); + } + if (!is_array($options)) { + $options = func_get_args(); + + $tmpOptions = array(); + $tmpOptions['classname'] = array_shift($options); + + $options = $tmpOptions; + } + + if (!array_key_exists('className', $options)) { + throw new Exception\InvalidArgumentException("Missing option 'className'"); + } + + $this->setClassName($options['className']); + + parent::__construct($options); + } + + /** + * Get class name + * + * @return string + */ + public function getClassName() + { + return $this->className; + } + + /** + * Set class name + * + * @param string $className + * @return self + */ + public function setClassName($className) + { + $this->className = $className; + return $this; + } + + /** + * Returns true if $value is instance of $this->className + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + if($value instanceof $this->className) { + return true; + } + $this->error(self::NOT_INSTANCE_OF); + return false; + } +}