标签:php
很长一段时间我都在研究php.
但是我可能不知道一个问题
就像我有一个功能如下:
function hello($param1, $param2="2", $param3="3", $param4="4")
现在每当我使用这个函数,如果我需要第4个参数那个$param4那么我仍然需要像这样将所有空白称为空白:
hello(1, '', '', "param4");
那么还有另一种方法可以在调用中传递第1和第4个参数而不是长列表空格吗?
或者还有其他标准方法吗?
解决方法:
有一个名为skipparams的RFC,但它被拒绝了.
PHP没有语法糖,例如hello(1,,“param4”);也好你好(1,默认,默认,“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 );
}
现在你可以:
hello( 1, [ 'param4'=>'not 4, muahaha!' ] );
如果你的函数需要一些高级的东西,比如类型提示然后而不是array_merge(),你需要手动循环$more_params并强制执行类型.
标签:php
来源: https://codeday.me/bug/20190607/1195229.html