Laravel 5.8、PHP中的validate()和validated()函数有什么区别?
What is the difference between validate() and validated() function in Laravel 5.8, PHP?
我在 laravel.com 网站的文档中找不到 validate()
和 validated()
函数之间的不同定义。
但是在Validator
接口文件中,我看到函数的注释如下:
/**
* Run the validator's rules against its data.
*
* @return array
*/
public function validate();
/**
* Get the attributes and values that were validated.
*
* @return array
*/
public function validated();
我确实理解这些评论,但是当我编写代码并测试这两个函数时,我没有发现任何区别。两者似乎表现相同:
- 验证数据。
- 如果失败,将用户重定向到他们之前的页面。
- 如果成功,return 验证数组中的数据。
那么,Laravel 5.8中这两个函数有什么区别呢?
在我的例子中,我使用如下验证,因为我不想在验证失败时将用户重定向回他们之前的页面。
$validator = validator($array_data, $array_rules, $array_message);
if ($validator->fails()) {
// Do something
} else {
$validated_data = $validator->validate();
// Here I am not sure if I should use the validated() function, because I do not see the difference between these two functions.
// $validated_data = $validator->validated();
}
看起来两者都可以安全使用,至少目前是这样。 Here's the source for validate()
:
public function validate()
{
if ($this->fails()) {
throw new ValidationException($this);
}
return $this->validated();
}
如您所见,return 值是 validated()
的结果。
也就是说,我个人会使用 validate()
来执行验证,并使用 validated()
来获取经过验证的数据。这应该使您免受将来对 validate()
函数的潜在更改(例如,如果它更改为 return 和 true/false)并导致代码更具可读性。
我在 laravel.com 网站的文档中找不到 validate()
和 validated()
函数之间的不同定义。
但是在Validator
接口文件中,我看到函数的注释如下:
/**
* Run the validator's rules against its data.
*
* @return array
*/
public function validate();
/**
* Get the attributes and values that were validated.
*
* @return array
*/
public function validated();
我确实理解这些评论,但是当我编写代码并测试这两个函数时,我没有发现任何区别。两者似乎表现相同:
- 验证数据。
- 如果失败,将用户重定向到他们之前的页面。
- 如果成功,return 验证数组中的数据。
那么,Laravel 5.8中这两个函数有什么区别呢?
在我的例子中,我使用如下验证,因为我不想在验证失败时将用户重定向回他们之前的页面。
$validator = validator($array_data, $array_rules, $array_message);
if ($validator->fails()) {
// Do something
} else {
$validated_data = $validator->validate();
// Here I am not sure if I should use the validated() function, because I do not see the difference between these two functions.
// $validated_data = $validator->validated();
}
看起来两者都可以安全使用,至少目前是这样。 Here's the source for validate()
:
public function validate()
{
if ($this->fails()) {
throw new ValidationException($this);
}
return $this->validated();
}
如您所见,return 值是 validated()
的结果。
也就是说,我个人会使用 validate()
来执行验证,并使用 validated()
来获取经过验证的数据。这应该使您免受将来对 validate()
函数的潜在更改(例如,如果它更改为 return 和 true/false)并导致代码更具可读性。