PHP函数,null默认参数

时间:2014-05-05 09:49:32

标签: php function parameters overloading

我有一个看起来像这样的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个参数)?关于如何定义单独的函数签名的传统方法重载的任何想法?

我的问题是一般性的。希望有人可以在它周围发光。

1 个答案:

答案 0 :(得分:8)

当您声明这样的函数时:

testfunction($param1, $param2, $param3, $param4=NULL) {
    //do stuff
}

你告诉PHP $ param4已经有了一个值,所以当调用该函数时,已经为它分配了一个值。它并不指望您为该参数发送参数,因为已经分配了一个参数。

因此,它知道该功能将能够(在某种程度上)运行。 它对于制作可选参数很有用。

但是当你声明一个函数时:

testfunction($param1, $param2, $param3, $param4) {
    //do stuff
}

PHP期望您通过该参数发送($ param4),因为没有它,该函数将无法完成您已设置的任务,至少PHP会假设,因为你永远不会创建一个带有4个参数的函数,其中没有一个参数在函数体中使用。

有意义吗?