Cla*_*Boy 7 php function optional-parameters user-defined-functions
我知道可以使用可选参数,如下所示:
function doSomething($do, $something = "something") {
}
doSomething("do");
doSomething("do", "nothing");
Run Code Online (Sandbox Code Playgroud)
但是假设你有以下情况:
function doSomething($do, $something = "something", $or = "or", $nothing = "nothing") {
}
doSomething("do", $or=>"and", $nothing=>"something");
Run Code Online (Sandbox Code Playgroud)
因此,在上面的行中它将默认$something为"某事",即使我为其他一切设置了值.我知道这在.net中是可能的 - 我一直都在使用它.但如果可能的话,我需要在PHP中执行此操作.
任何人都可以告诉我这是否可能?我正在改变我已经整合到Interspire购物车中的Omnistar联盟计划 - 所以我想保持一个功能正常工作,我不会改变对该功能的调用的任何地方,但在一个地方(我正在扩展)我想要指定其他参数.除非我绝对必须,否则我不想创建另一个函数.
san*_*mai 12
不,在PHP中,写作时是不可能的.使用数组参数:
function doSomething($arguments = array()) {
// set defaults
$arguments = array_merge(array(
"argument" => "default value",
), $arguments);
var_dump($arguments);
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
doSomething(); // with all defaults, or:
doSomething(array("argument" => "other value"));
Run Code Online (Sandbox Code Playgroud)
更改现有方法时:
//function doSomething($bar, $baz) {
function doSomething($bar, $baz, $arguments = array()) {
// $bar and $baz remain in place, old code works
}
Run Code Online (Sandbox Code Playgroud)