变量类型验证

时间:2011-03-06 10:34:26

标签: php typechecking

我有方法哪些参数只能处理某些类型的变量。我对如何验证这些类型有一些想法,我需要你的帮助来选择最佳方式 我可以:

  • 如果其中一种变量错误,只需返回false,而不让用户知道发生了什么。另外,如果用户通常不检查功能的输出 - 例如。 ob_start() - 他们不会知道这甚至是错的;
  • 抛出自定义InvalidArgumentException说“参数X的类型不正确”。因此,我必须检查每个参数,使代码不可读。另外,实际上必须捕获异常,我在代码中不喜欢这些try...catch
  • 致电error_log()。但是我必须检查每一个参数。

您会选择什么选项?为什么?否则,你有更好的主意吗?


更新
当我谈论类型时,我指的是: http://php.net/manual/en/language.types.php

2 个答案:

答案 0 :(得分:0)

如果您正在谈论代码中传递的参数,那么您必须记录错误并修复代码中的每个可能错误。

示例:

function(){
    if (!is_array($arg))
       trigger_error();
}

OR

仅使用对象,您可以指定参数类型

示例:

function yay(Class1 $arg1, Class2 $arg2){
    //That's it!
}

答案 1 :(得分:0)

在php中进行类型检查的唯一方法是使用内置函数。你可以在这里找到一个列表:http://www.php.net/manual/en/ref.var.php这是一个真正痛苦的屁股,但你别无选择。

对于检查本身,我将检查函数开头的所有参数类型,否则抛出错误。然后你总是可以添加一些debuging print_r来发现罪魁祸首。