很长一段时间我都在研究php.
但是我可能不知道一个问题
就像我有一个功能如下:
function hello($param1, $param2="2", $param3="3", $param4="4")
Run Code Online (Sandbox Code Playgroud)
现在每当我使用这个函数,如果我需要第4个参数那个$ param4那么我仍然需要像这样将所有空白称为空白:
hello(1, '', '', "param4");
Run Code Online (Sandbox Code Playgroud)
那么还有另一种方法可以在调用中传递第1和第4个参数而不是长列表空格吗?
或者还有其他标准方法吗?
有一个这个名为skipparams的RFC,但它被拒绝了.
PHP没有语法糖,例如hello(1, , , "param4");nor hello(1, default, default, "param4");(根据RFC)在调用函数时跳过可选参数.
如果这是你自己的函数,那么你可以选择将选项传递到插件中的常见jQuery样式,如下所示:
function hello( $param1, $more_params = [] )
{
static $default_params = [
'param2' => '2',
'param3' => '3',
'param4' => '4'
];
$more_params = array_merge( $default_params, $more_params );
}
Run Code Online (Sandbox Code Playgroud)
现在你可以:
hello( 1, [ 'param4'=>'not 4, muahaha!' ] );
Run Code Online (Sandbox Code Playgroud)
如果你的函数需要一些高级的东西,比如类型提示,那么array_merge()你需要手动循环$more_params并强制执行类型.