我有一个看起来像这样的PHP函数签名,如果没有提供,我希望第4个参数默认为NULL。
testfunction($param1, $param2, $param3, $param4=NULL) {
//do stuff
}
我也可以使用4个参数调用
x = testfunction('100', 'abc', 'xxx', null);
为什么我也可以使用3个参数调用函数而没有任何错误?
x = testfunction('100', 'abc', 'xxx');
我做的甚至是正确的(使用3个参数)?关于如何定义单独的函数签名的传统方法重载的任何想法?
我的问题是一般性的。希望有人可以在它周围发光。
答案 0 :(得分:8)
当您声明这样的函数时:
testfunction($param1, $param2, $param3, $param4=NULL) {
//do stuff
}
你告诉PHP $ param4已经有了一个值,所以当调用该函数时,已经为它分配了一个值。它并不指望您为该参数发送参数,因为已经分配了一个参数。
因此,它知道该功能将能够(在某种程度上)运行。 它对于制作可选参数很有用。但是当你声明一个函数时:
testfunction($param1, $param2, $param3, $param4) {
//do stuff
}
PHP期望您通过该参数发送($ param4),因为没有它,该函数将无法完成您已设置的任务,至少PHP会假设,因为你永远不会创建一个带有4个参数的函数,其中没有一个参数在函数体中使用。
有意义吗?