在Laravel中自定义验证功能 [英] customize validation functions in Laravel
本文介绍了在Laravel中自定义验证功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我很好奇($value & ($value - 1)) != 0
在下面的验证中它如何工作才能知道数字是2的幂?!
I am curious about ($value & ($value - 1)) != 0
that how it is working in below validation to know number is power of 2?!
function ($attribute, $value, $fail) {
if ($value == 0 || ($value & ($value - 1)) != 0) {
$fail($attribute . ' is not power of 2!');
}
}
如果我想获得除2的幂之外的2的幂之间的数字,我该怎么办?我可以使用和修改此命令吗? (例如数字:1,2,3,4,6,8,12,16,...)
If I would like get numbers between numbers of power 2 in addition to power 2 numbers, what shall I do? can I use and modify this command? (e.g. numbers: 1,2,3,4,6,8,12,16,...)
推荐答案
我解决了算法.我为算法创建了一个规则对象:
I Solved the algorithm. I created a Rule Object for my algorithm:
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class DoubleThreshold implements Rule
{
public function passes($attribute, $value)
{
$issue = floor(log($value, 2));
$power1 = pow(2, $issue);
$power2 = pow(2, $issue - 1);
$power3 = $power1 + $power2;
if ($value == 1 || $value == $power1 || $value == $power2 || $value == $power3)
return true;
return false;
}
public function message()
{
return 'The :attribute is not in consider numbers!';
}
}
要使用上述规则,我做了这样的事情:
To use the above rule, I did something like this:
public function rules()
{
return [
'threshold' => ['required', 'between:1,1000', new DoubleThreshold]
];
}
这篇关于在Laravel中自定义验证功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文