寻找更好的多类型验证
Searching for better multitype validation
我需要检查变量是否属于指定的标量类型 - 但我不能使用像 is_scalar 这样的通用函数 - 因为这也会接受我不想接受的那些类型(那种类型)。
可以逐步检查类型:
- 内置函数,如
is_string
- 与
gettype
给出的值的单独比较
但有点不舒服,因为它会给出很长的代码。
因此,我准备了以下(相对较短 - 如果您忽略 外部 部分)代码:
!in_array(gettype($Item), MarC::Show_Options_Scalars())
哪里
函数Show_Options_Scalars()
表示允许接受的标量类型。
那个准备允许类型的数组 - 从接口中编写的常量。这就是为什么我写道如果忽略 external 部分,自己的验证相对较短。
而且我仍然不确定是否可以更好地完成多类型验证 - 这意味着我是否可以通过其他更好的方式验证变量类型。 外部代码不是搜索更好的多类型验证的原因。
我喜欢你的代码。我只会为它做一个函数
function val( &$value ) {
return !in_array( gettype( $value ), array( 'boolean', 'integer', 'what ever' ) );
}
我用 & 来节省一些资源。
用法:
if( val( $test ) ) die( 'pass' );
我不确定我是否完全理解你的问题。但是
以下函数将允许您输入变量和 'legal' 类型数组。
function validate($input, $allowed_types) {
return in_array(gettype($input), $allowed_types);
};
所以,
validate('a great string which is a scalar!', ['string', 'float', 'blah']);
会returntrue
。同时:
validate('a great string which is a scalar!', ['integer', 'float', 'blah']);
会 return false
.
我需要检查变量是否属于指定的标量类型 - 但我不能使用像 is_scalar 这样的通用函数 - 因为这也会接受我不想接受的那些类型(那种类型)。
可以逐步检查类型:
- 内置函数,如
is_string
- 与
gettype
给出的值的单独比较
但有点不舒服,因为它会给出很长的代码。
因此,我准备了以下(相对较短 - 如果您忽略 外部 部分)代码:
!in_array(gettype($Item), MarC::Show_Options_Scalars())
哪里
函数Show_Options_Scalars()
表示允许接受的标量类型。
那个准备允许类型的数组 - 从接口中编写的常量。这就是为什么我写道如果忽略 external 部分,自己的验证相对较短。
而且我仍然不确定是否可以更好地完成多类型验证 - 这意味着我是否可以通过其他更好的方式验证变量类型。 外部代码不是搜索更好的多类型验证的原因。
我喜欢你的代码。我只会为它做一个函数
function val( &$value ) {
return !in_array( gettype( $value ), array( 'boolean', 'integer', 'what ever' ) );
}
我用 & 来节省一些资源。
用法:
if( val( $test ) ) die( 'pass' );
我不确定我是否完全理解你的问题。但是
以下函数将允许您输入变量和 'legal' 类型数组。
function validate($input, $allowed_types) {
return in_array(gettype($input), $allowed_types);
};
所以,
validate('a great string which is a scalar!', ['string', 'float', 'blah']);
会returntrue
。同时:
validate('a great string which is a scalar!', ['integer', 'float', 'blah']);
会 return false
.