在PHP中按名称指定参数


Specify parameter by name in PHP

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

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

然后我就能做到:

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

因此,关于这一点有两个问题:

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

它被称为默认参数。

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

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不支持命名参数,所以顺序很重要。因此,不能省略中间的params。因此,以下语句可能是错误的,因为您正在尝试使用命名参数。

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

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

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

破坏

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

并不意味着$optional_value2将成为功能中的"测试"参见演示

您当前实现的是函数中的默认参数

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

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

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

PHP没有像C#那样的命名参数。

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

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

当你呼叫时

echo f(); // John Doe will be displayed
echo f("Robert"); //Robert will be displayed

这是默认参数

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

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

}

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

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

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

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

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

不允许!函数调用中不能再出现$optional_value2="test"。。。应该简单地将"test"作为参数传递给函数。