| <?php |
| |
| namespace LdapRecord\Configuration\Validators; |
| |
| use LdapRecord\Configuration\ConfigurationException; |
| |
| abstract class Validator |
| { |
| /** |
| * The configuration key under validation. |
| * |
| * @var string |
| */ |
| protected $key; |
| |
| /** |
| * The configuration value under validation. |
| * |
| * @var mixed |
| */ |
| protected $value; |
| |
| /** |
| * The validation exception message. |
| * |
| * @var string |
| */ |
| protected $message; |
| |
| /** |
| * Constructor. |
| * |
| * @param string $key |
| * @param mixed $value |
| */ |
| public function __construct($key, $value) |
| { |
| $this->key = $key; |
| $this->value = $value; |
| } |
| |
| /** |
| * Determine if the validation rule passes. |
| * |
| * @return bool |
| */ |
| abstract public function passes(); |
| |
| /** |
| * Validate the configuration value. |
| * |
| * @throws ConfigurationException |
| * |
| * @return bool |
| */ |
| public function validate() |
| { |
| if (! $this->passes()) { |
| $this->fail(); |
| } |
| |
| return true; |
| } |
| |
| /** |
| * Throw a configuration exception. |
| * |
| * @throws ConfigurationException |
| * |
| * @return void |
| */ |
| protected function fail() |
| { |
| throw new ConfigurationException( |
| str_replace(':option', $this->key, $this->message) |
| ); |
| } |
| } |