PHP函数,检查参数数据类型和有效值?

时间:2012-10-27 08:39:47

标签: php function

在PHP中编写函数时,应该检查和验证参数中的数据有多广泛?

例如,如果我希望参数是一个布尔值,我应该这样抛出它吗? 或者检查参数类型是否为boolean,如果不是则返回FALSE?

除非函数(urrg)的功能是验证某些数据,否则我并不特别喜欢从函数返回FALSE的想法,因为参数无效。因为它可以掩盖函数的实际结果,如果它被设计为无论如何返回TRUE / FALSE。

如果函数生成由于提供无效数据而导致的PHP错误,那么对开发人员来说,这比仅返回FALSE或返回空字符串更有用。这样他们知道他们的输入数据(因此可能使用该函数)是无效/不正确的,而不是函数中的测试只返回FALSE而不是TRUE。

如果数据无效,我总是可以检查进入函数的数据和trigger_error()。但这在多大程度上是必要的?

2 个答案:

答案 0 :(得分:1)

PHP不是强类型语言,因此变量是松散类型的。对于数组和对象,可以在函数调用中使用type hinting,让PHP处理错误类型的错误。

在下一版本的php中有一个rumour,它还会为原始类型(标量)提供类型提示支持。当这成为现实时,你的问题就解决了。

现在你必须自己处理,你应该如何处理它们。如果提供的类型存在严重错误,请考虑抛出异常。

我认为在出现问题时返回false是不好的设计。一个函数应该有一个明确的结果。

答案 1 :(得分:1)

正如阿萨德所说,这实际上取决于你正在开发的人/你想要走多远。抛出argumentInvalidExceptions根本不是一个坏主意,并且经常在其他语言中使用。

当行为意外时,我更喜欢使用明显的自解释参数名称(而不是i或x),函数名称和phpdoc。此外,从php 5.1开始,您可以使用为您检查的类型化参数(仅适用于类,接口和数组)。

我建议外部数据(用户输入,文件,网络等)始终有效。