Sha256: 2b6fb5d3b3861601a6b4ff6d65689f0f65223f228a05d705c08ba224880513a2
Contents?: true
Size: 1.22 KB
Versions: 7
Compression:
Stored size: 1.22 KB
Contents
<?php namespace Predis\Options; class CustomOption implements IOption { private $_validate; private $_default; public function __construct(Array $options) { $this->_validate = $this->filterCallable($options, 'validate'); $this->_default = $this->filterCallable($options, 'default'); } private function filterCallable($options, $key) { if (!isset($options[$key])) { return; } $callable = $options[$key]; if (is_callable($callable)) { return $callable; } throw new \InvalidArgumentException("The parameter $key must be callable"); } public function validate($value) { if (isset($value)) { if ($this->_validate === null) { return $value; } $validator = $this->_validate; return $validator($value); } } public function getDefault() { if (!isset($this->_default)) { return; } $default = $this->_default; return $default(); } public function __invoke($value) { if (isset($value)) { return $this->validate($value); } return $this->getDefault(); } }
Version data entries
7 entries across 7 versions & 1 rubygems