【发布时间】:2019-03-29 15:22:41
【问题描述】:
我想在这样的类中实现一个方法:
class Query {
public function orderBy($dir="asc", ...$fields){}
}
其中$dir 是默认参数,$field 是使用 (...) 标记的可变长度参数。
问题是可变长度参数必须在最后声明,当我这样做时,开发人员不能将第一个参数跳过为其默认值。我该如何解决这个问题?
请注意,我不想使用func_get_args(),因为我希望开发人员有一些类型提示。
【问题讨论】:
-
只需使用
...$fields,并以编程方式处理方法内第一个参数的默认值。然后,为解释方法签名的方法编写一个好的 PHPDoc。 -
您可以创建一个“MethodArguments”类,该类将这两个参数作为属性,其中可变长度在构造函数中传递,默认具有设置函数。但这一切都取决于你想变得多严格。
-
@cale_b , ...$fields 是一个单独的参数,我希望开发人员知道应该为哪个参数分配哪个值。
-
@cale_b 让我更新我的示例代码,以便您更好地了解这个概念
-
@cale_b 我更新了示例。 $dir 是排序方向,可以是“asc”或“desc”,$fields 是列的列表。
标签: php function variadic-functions default-arguments