PHP Optional Parameters - specify parameter value by name?

后端 未结 4 1342

I know it is possible to use optional arguments as follows:

function doSomething($do, $something = \"something\") {

}

doSomething(\"do\");
doSomething(\"do         


        
相关标签:
4条回答
  • 2020-12-02 00:43

    Have a look at func_get_args: http://au2.php.net/manual/en/function.func-get-args.php

    0 讨论(0)
  • 2020-12-02 00:44

    PHP has no named parameters. You'll have to decide on one workaround.

    Most commonly an array parameter is used. But another clever method is using URL parameters, if you only need literal values:

     function with_options($any) {
          parse_str($any);    // or extract() for array params
     }
    
     with_options("param=123&and=and&or=or");
    

    Combine this approach with default parameters as it suits your particular use case.

    0 讨论(0)
  • 2020-12-02 00:53

    No, in PHP that is not possible as of writing. Use array arguments:

    function doSomething($arguments = array()) {
        // set defaults
        $arguments = array_merge(array(
            "argument" => "default value", 
        ), $arguments); 
    
        var_dump($arguments);
    }
    

    Example usage:

    doSomething(); // with all defaults, or:
    doSomething(array("argument" => "other value"));
    

    When changing an existing method:

    //function doSomething($bar, $baz) {
    function   doSomething($bar, $baz, $arguments = array()) {
        // $bar and $baz remain in place, old code works
    }
    
    0 讨论(0)
  • 2020-12-02 00:58

    Named arguments are not currently available in PHP (5.3).

    To get around this, you commonly see a function receiving an argument array() and then using extract() to use the supplied arguments in local variables or array_merge() to default them.

    Your original example would look something like:

    $args = array('do' => 'do', 'or' => 'not', 'nothing' => 'something');
    doSomething($args);
    
    0 讨论(0)
提交回复
热议问题