[李景山php]每天laravel-20161003|Validator.php-3

    /**
     * Validate a given attribute against a rule.
     *
     * @param  string  $attribute
     * @param  string  $rule
     * @return void
     */
    protected function validate($attribute, $rule)
    {// validate a given attribute against a rule.
        list($rule, $parameters) = $this->parseRule($rule);//list function to get the

        if ($rule == '') {
            return;
        }// if no rule

        // First we will get the numeric keys for the given attribute in case the field is nested in
        // an array. Then we determine if the given rule accepts other field names as parameters.
        // If so, we will replace any asterisks found in the parameters with the numeric keys.
        if (($keys = $this->getNumericKeys($attribute)) &&
            $this->dependsOnOtherFields($rule)) {//get number and depends
            $parameters = $this->replaceAsterisksInParameters($parameters, $keys);
        }// a normal logic function

        // We will get the value for the given attribute from the array of data and then
        // verify that the attribute is indeed validatable. Unless the rule implies
        // that the attribute is required, rules are not run for missing values.
        $value = $this->getValue($attribute);
        // We will get the value for the given attribute from the array of data and then
        // verify that the attribute is indeed vaidatable.Unless the rule implies
        // that the attribute is required,rules are not run for missing values.

        $validatable = $this->isValidatable($rule, $attribute, $value);
        // determine validatable

        $method = "validate{$rule}";// get method way

        if ($validatable && ! $this->$method($attribute, $value, $parameters, $this)) {
            $this->addFailure($attribute, $rule, $parameters);
        }// determine all
    }

    /**
     * Returns the data which was valid.
     *
     * @return array
     */
    public function valid()
    {
        if (! $this->messages) {
            $this->passes();
        }

        return array_diff_key($this->data, $this->messages()->toArray());
    }// change it is a real valid data

    /**
     * Returns the data which was invalid.
     *
     * @return array
     */
    public function invalid()
    {
        if (! $this->messages) {
            $this->passes();
        }//if do not has messages get passes

        return array_intersect_key($this->data, $this->messages()->toArray());// return array_intersect_key
    }// a invalid method

    /**
     * Get the value of a given attribute.
     *
     * @param  string  $attribute
     * @return mixed
     */
    protected function getValue($attribute)
    {
        if (! is_null($value = Arr::get($this->data, $attribute))) {// type1
            return $value;// return value
        } elseif (! is_null($value = Arr::get($this->files, $attribute))) {//type2
            return $value;// return value
        }
    }//Get the value of a given attribute

    /**
     * Determine if the attribute is validatable.
     *
     * @param  string  $rule
     * @param  string  $attribute
     * @param  mixed   $value
     * @return bool
     */
    protected function isValidatable($rule, $attribute, $value)
    {
        return $this->presentOrRuleIsImplicit($rule, $attribute, $value) &&
               $this->passesOptionalCheck($attribute) &&
               $this->hasNotFailedPreviousRuleIfPresenceRule($rule, $attribute);
        //three type determine this value.
    }//determine if the attribute is validatable.

    /**
     * Determine if the field is present, or the rule implies required.
     *
     * @param  string  $rule
     * @param  string  $attribute
     * @param  mixed   $value
     * @return bool
     */
    protected function presentOrRuleIsImplicit($rule, $attribute, $value)
    {
        return $this->validateRequired($attribute, $value) || $this->isImplicit($rule);
        // this validateRequired
    }//Determine if the field is present, or the rule implies required.

    /**
     * Determine if the attribute passes any optional check.
     *
     * @param  string  $attribute
     * @return bool
     */
    protected function passesOptionalCheck($attribute)
    {
        if ($this->hasRule($attribute, ['Sometimes'])) {
            return array_key_exists($attribute, Arr::dot($this->data))
                || in_array($attribute, array_keys($this->data))
                || array_key_exists($attribute, $this->files);
        }// this->hasRule($attribute)

        return true;
    }// passes Optional Check

    /**
     * Determine if a given rule implies the attribute is required.
     *
     * @param  string  $rule
     * @return bool
     */
    protected function isImplicit($rule)
    {
        return in_array($rule, $this->implicitRules);
    }// check it is a implicit
    // in_array
    // sorry today,we need to make a very important PPT, so done.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值