我知道一些内置的php函数有混合返回类型,例如strpos()
从自定义php函数返回值是否存在某种“最佳实践”?
看看这个
function getSupportedCurrencies() {
// code here
}
getSupportedCurrencies()
期望返回array
种货币
但如果没有受支持的货币,我们可以轻松返回 false
或 null
。
但从语义上讲,我们应该返回一个空 array()
。
我理解PHP变量是松散类型的,允许程序灵活
但是松散类型的函数有什么好处呢?它只是给出了
程序员opportunity to write bad code
?请举例说明
需要有混合回归类型。感谢。
答案 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,它也会提供更好的可读性