PHP函数返回类型

时间:2014-08-14 17:04:54

标签: php function

我知道一些内置的php函数有混合返回类型,例如strpos() 从自定义php函数返回值是否存在某种“最佳实践”?

看看这个

function getSupportedCurrencies() {
    // code here   
} 

getSupportedCurrencies()期望返回array种货币 但如果没有受支持的货币,我们可以轻松返回 false null 。 但从语义上讲,我们应该返回一个空 array()

我理解PHP变量是松散类型的,允许程序灵活 但是松散类型的函数有什么好处呢?它只是给出了 程序员opportunity to write bad code?请举例说明 需要有混合回归类型。感谢。

2 个答案:

答案 0 :(得分:1)

在PHP中没有真正的类型安全方法,因为没有真正的安全性返回值是错误的类型。您可能希望查看一些额外的工具,如HipHop编译器(或其他语言)。

答案 1 :(得分:0)

就个人而言,在处理接受数组的函数时。我更喜欢这样的东西:

function GetCur ($Argument = array()){
        $Errors = 0;
    if (!is_array($Argument)){
        // If is not an array then increment the errors 
        $Errors++;
    }
    if (empty($Argument)){
        // If passed array is empty then increment 
        $Errors++;
    }
    if ($Errors >0){
        // If errors are higher than 0, then return false 
        return false; 
    }
    // Do other validations that you need your function to do 

}

然后验证:

if (GetCur($Array) !== false){
    // function has not returned false, so correct information has been passed
}else{
    // Function has returned false, so incorrect information has been passed. So log/show a error 
}

一个简单的比较是查看Strpos的工作方式,它指定:

  

警告此函数可能返回布尔值FALSE,但也可能返回a   非布尔值,其值为FALSE。请阅读有关的部分   布尔值获取更多信息。使用===运算符进行测试   返回此函数的值。

请注意,这是一个例子。有一种更有效的方法可以处理函数中无数的if语句,如果你正在创建一个API,它也会提供更好的可读性