- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\Captcha;
- use Traversable;
- use Zend\Validator\AbstractValidator;
- /**
- * Base class for Captcha adapters
- *
- * Provides some utility functionality to build on
- */
- abstract class AbstractAdapter extends AbstractValidator implements AdapterInterface
- {
- /**
- * Captcha name
- *
- * Useful to generate/check form fields
- *
- * @var string
- */
- protected $name;
- /**
- * Captcha options
- *
- * @var array
- */
- protected $options = array();
- /**
- * Options to skip when processing options
- * @var array
- */
- protected $skipOptions = array(
- 'options',
- 'config',
- );
- /**
- * Get name
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
- /**
- * Set name
- *
- * @param string $name
- * @return AbstractAdapter
- */
- public function setName($name)
- {
- $this->name = $name;
- return $this;
- }
- /**
- * Set single option for the object
- *
- * @param string $key
- * @param string $value
- * @return AbstractAdapter
- */
- public function setOption($key, $value)
- {
- if (in_array(strtolower($key), $this->skipOptions)) {
- return $this;
- }
- $method = 'set' . ucfirst($key);
- if (method_exists($this, $method)) {
- // Setter exists; use it
- $this->$method($value);
- $this->options[$key] = $value;
- } elseif (property_exists($this, $key)) {
- // Assume it's metadata
- $this->$key = $value;
- $this->options[$key] = $value;
- }
- return $this;
- }
- /**
- * Set object state from options array
- *
- * @param array|Traversable $options
- * @throws Exception\InvalidArgumentException
- * @return AbstractAdapter
- */
- public function setOptions($options = array())
- {
- if (!is_array($options) && !$options instanceof Traversable) {
- throw new Exception\InvalidArgumentException(__METHOD__ . ' expects an array or Traversable');
- }
- foreach ($options as $key => $value) {
- $this->setOption($key, $value);
- }
- return $this;
- }
- /**
- * Retrieve options representing object state
- *
- * @return array
- */
- public function getOptions()
- {
- return $this->options;
- }
- /**
- * Get helper name used to render captcha
- *
- * By default, return empty string, indicating no helper needed.
- *
- * @return string
- */
- public function getHelperName()
- {
- return '';
- }
- }