private function doValidateData($rule, $key, $isValid, $other = '')
    {
        $method = Inflector::camelize($rule);

        if (!is_callable([$this, $method])) {
            throw new \Exception('Undefined method '.__CLASS__.' '.$method.' called.');
        }

        if ($isValid === false) {
            $this->setErrors($key.self::ERROR, Inflector::camelize((str_replace('_', ' ', $key))));
        }

        if (!isset($this->param[$key])) {
            throw new ValidatorException(sprintf('Key %s doesn\'t exists in $_POST array ', $key));
        }

        return (!empty($other)) ? $this->{$method}($key, $other) : $this->{$method}($key);
    }