您的位置:首页 > 编程语言 > PHP开发

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

2016-08-02 09:04 609 查看
/**
* 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.


本文出自 “专注php” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1833334
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: