我希望提供一个选项列表作为函数的参数。
如果PHP已命名参数,则将这样进行:
function setOptions($title, $url, $public = true, $placeholder = "type here...") {
...
}
setOptions($title = "Hello World", $url = "example.com", $placeholder = "hi");
不幸的是,PHP并没有命名的参数(请告诉我,如果PHP7计划有一些作为注释)。
我见过的大多数PHP脚本都使用类似的替代数组方法,如下所示:
function setOptions($options) {
...
}
setOptions(array(
'title' => "Hello World",
'url' => "example.com",
'placeholder' => "hi"
));
尽管这可以正常工作,但存在以下缺点:
有没有更好的方法可以解决这些问题(在当前的PHP或PHP7中,甚至在hacklang(?)中)。
在Hack中,您可以使用Shapes。形状为关联数组定义了一种结构,以便可以自动完成内容(取决于IDE支持),并由类型检查器识别拼写错误。
例如,您的示例可以像这样重做:
function setOptions(shape(
'title' => string,
'url' => string,
'public' => ?bool,
'placeholder' => ?string,
) $options) {
$title = $options['title'];
$url = $options['url'];
$public = Shapes::idx($options, 'public', true);
$placeholder = Shapes::idx($options, 'placeholder', 'type here...');
...
}
setOptions(shape(
'title' => 'Hello World',
'url' => 'example.com',
'placeholder' => 'hi',
));
此标记title
和url
都是必需选项,public
并且placeholder
是可选的(形状中的所有可空类型都被视为可选)。Shapes::idx
然后用于获取提供的值;如果未传入值,则使用默认值(第三个参数)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句