CustomOption.php 801 B

12345678910111213141516171819202122232425
  1. <?php
  2. namespace Predis\Options;
  3. class CustomOption extends Option {
  4. private $__validate, $_default;
  5. public function __construct(Array $options) {
  6. $validate = isset($options['validate']) ? $options['validate'] : 'parent::validate';
  7. $default = isset($options['default']) ? $options['default'] : 'parent::getDefault';
  8. if (!is_callable($validate) || !is_callable($default)) {
  9. throw new \InvalidArgumentException("Validate and default must be callable");
  10. }
  11. $this->_validate = $validate;
  12. $this->_default = $default;
  13. }
  14. public function validate($value) {
  15. return call_user_func($this->_validate, $value);
  16. }
  17. public function getDefault() {
  18. return $this->validate(call_user_func($this->_default));
  19. }
  20. }