1

我不知道这叫什么,但我看到 PHP 支持一个很酷的参数传递,例如:

function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){

}

然后我就可以做到:

myFunc('something', $optional_value2 = 'test');

所以有两个关于这个的问题:

  1. 这种技术叫什么(供将来参考)?
  2. 由于它支持什么 PHP 版本?
4

4 回答 4

2

它称为默认参数

在你的例子中。有一个小错误。给定你的功能

function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
.....
}

您可以通过以下方式调用它:

myFunc('required_value'); //$optional_value1 = 'default', $optional_value2 = 'default2'
myFunc('required_value', 'opt1'); //$optional_value2 = 'default2'
myFunc('required_value', 'opt1', 'op2');

需要注意的是php不支持命名参数,所以顺序很重要。因此,您不能省略中间参数。因此以下语句将是错误的,因为您正在尝试使用命名参数。

myFunc('something', $optional_value2 = 'test');

有关更多详细信息,请参阅

于 2013-07-11T11:44:15.317 回答
1

我不确定是什么,但you are able to dophp 还不支持命名参数

毁了

myFunc('something', $optional_value2 = 'test');

并不意味着$optional_value2会成为函数中的“测试”参见演示

您当前正在实施的称为函数中的默认参数

于 2013-07-11T11:39:47.663 回答
0

我想到的唯一想法是通过数组传递参数。

function f($params)
{ 
    if(!isset($params['name']) || !isset($params['adress'])) 
    {
        //trigger error throw exception or whatever
    }
    //do something with params
} 

并打电话

f(array('name' => 'asdfasdf', 'adress' => 'adfasdf')); 

然后在函数中,您可以检查是否有足够的参数来处理函数。

PHP 没有命名参数,例如 C#。

PHP 支持参数的默认值,因此您可以使用它,例如:

 function f($name = "John Doe"){echo $name;}

你打电话时

echo f(); // John Doe will be displayed
echo f("Robert"); //Robert will be displayed
于 2013-07-11T11:39:35.953 回答
0

这是默认参数

需要注意的重要一点是,可选参数只能在最后指定,因此必需参数位于函数定义中的可选参数之前,例如

函数 myFunc($param1,$optional1= 'string',$optional2= 5) {

}

在调用函数时,我们可以将其称为

myFunc($param1);
myFunc($param1 , 'new string');
myFunc($param1,'string',10);

但不是 myFunc($param1,10); 不允许跳过中间参数!!! 你用来调用函数的方法是错误的

在你的例子中。有一个小错误。你不能省略中间参数。所以下面的函数调用

   myFunc('something', $optional_value2 = 'test'); 

不被允许!进一步 $optional_value2 = 'test' 不能出现在函数调用中......只需将 'test' 作为参数传递给函数。

于 2013-07-11T11:51:12.017 回答