在PHP中按名称指定参数

时间:2013-07-11 11:31:30

标签: php parameter-passing

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

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

}

然后我就能做到:

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

关于这个的2个问题:

  1. 这种技术叫做什么(供将来参考)?
  2. 既然支持PHP版本呢?

4 个答案:

答案 0 :(得分:1)

名为default parameters

在你的例子中。有一个小错误。鉴于你的功能

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');

有关详细信息,请参阅this

答案 1 :(得分: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

答案 2 :(得分:0)

我不确定you are able to do是什么,但php不支持Named Parameters

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

并不意味着$optional_value2会在函数See Demo

中成为'test`

您目前正在实施的内容在函数

中称为Default parameters

答案 3 :(得分:0)

这是默认参数

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

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

}

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

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

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

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

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

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