我将参数传递给PHP中的函数。我不知道参数是否定义。 现在我检查参数是否已定义并在调用函数之前转换为null。 是否有一种更优雅的方式通过铸造或类似的方式来做到这一点?如果未定义参数,我希望使用函数默认值。
示例:
//Params['x'] may or may not be defined
// I want to use this:
a(params['x']);
//Currently I use this (which I want to avoid) :
a( isset (params['x'])?params['x']:null);
function a (data=null){
// Here I want data to be null if params['x'] is not defined.
}
答案 0 :(得分:3)
如果您将此参数声明为参考:
function fun(&$param = null) {
}
请记住,如果传入的数组中没有它,它也会创建此条目,所以如果你有
$x = array('a' => 1);
您将致电fun($x['b']);
,$x
将会显示为
$x = array('a' => 1, 'b' => null);
答案 1 :(得分:0)
对于您不确定存在的所有内容,必须有一个点来测试它和/或确保它存在。您可以使用isset
/ empty
或使用确保值存在的操作来执行此操作,例如:
$params += array('x' => null);
您不应该设计函数来解决调用者可能没有的参数。如果函数需要参数,则让它需要参数period。您越早离开代码中的 may-or-may-not-there 模式,您就可以越快地要求并返回定义的值,从而减少您需要的代码量编写和调试。我的意思是唯一的不确定性应该是用户输入;尽可能早地将不确定的用户输入打入定义的形式,之后您的应用程序内部应该严格要求它所需要的和它返回的内容,而不是每个点都不确定。
答案 2 :(得分:0)
你已经完成了所有你需要做的事情。
使用这个函数原型,你会说,接受调用者传递的任何参数,或者如果没有传递则使用NULL。
function a ($data=null){
if ( $data == null ) {
// no parameter passed by caller
}
}
忘记了函数调用中所有参数的烦恼。一切都为你完成。