public function isValid() 
    {
        $this->_resetErrors();
        $cls = get_called_class();
        $rtn = true;
        $pk  = self::get(self::getPK());

        if (!array_key_exists($cls, self::$_validations)
            || sizeof(self::$_validations[$cls]) < 1
        ) {
            return true;
        }

        foreach (self::$_validations[$cls] as $attr => $validations) {
            $value = $this->_data[$attr];

            foreach ($validations as $validation) {
                $validation_key   = array_keys($validation);
                $validation_key   = $validation_key[0];
                $validation_value = array_values($validation);
                $validation_value = $validation_value[0];

                $args = array(get_called_class(), $pk, $attr, $value, $validation_value, $validation);
                $test = call_user_func_array(array("TORM\Validation", $validation_key), $args);

                if (!$test) {
                    $rtn = false;
                    $this->_addError($attr, Validation::$validation_map[$validation_key]);
                }
            }
        }
        return $rtn;
    }