CustomOption.php 843 B

123456789101112131415161718192021222324252627
  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. if (isset($value)) {
  16. return call_user_func($this->_validate, $value);
  17. }
  18. }
  19. public function getDefault() {
  20. return $this->validate(call_user_func($this->_default));
  21. }
  22. }