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