private function applyRuleToField(
        $sFieldName,
        $sRuleName,
        array $aOpt = array()
    ) {
        if (!isset($this->rules[$sRuleName])) {
            throw new Exception('Undefined rule name.');
        }
        $funcCall = $this->rules[$sRuleName][0];
        if (!$funcCall($sFieldName, $aOpt)) {
            if (isset($this->rules[$sRuleName][1])) {
                if (is_callable($this->rules[$sRuleName][1])) {
                    // If message entity is function
                    $funcMsg = $this->rules[$sRuleName][1];
                    $this->addError($funcMsg($sFieldName, $aOpt));
                } else {
                    // If message entity is string
                    $this->addError((string) $this->rules[$sRuleName][1]);
                }
            } else {
                // If message entity isn't set
                $this->addDefaultError($sFieldName);
            }
        }
    }