PHP可选参数 - 按名称指定参数值?

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)