2017-09-30 34 views
-1

假设我有几类以的方法腓 - 接口方法具有未知数量的参数

public function foo (int $a, int $b, ..) {..} 

其中的参数的数量取决于特定的类(但被固定为特定的类)。

有没有办法在接口中放置这样的方法,以便我的所有类都可以实现该接口?

我不认为variadics可以帮助这里,因为我需要定义我的所有foo实现为

public function foo(int ...$ints) {..} 

失去身边,我需要多少个参数有一个特定的类的信息。

可以使用的任何技巧?

P.S.我真的想避免例外,所以我不能检查参数的数量是否与编程相匹配

+0

传递一个params数组而不是单个参数。 – BSB

+0

@BSB这就是你使用variadics。您丢失了每个班级需要多少参数的信息 – marcosh

+0

无法完全理解。但是如果你想要传递的参数数量,你可以计数params数组索引。 – BSB

回答

0

没有使用func_num_argscount($ints)之类的东西,并在失败时抛出异常,没有办法实现这一点。

这也似乎是一个潜在的设计缺陷。

如果你真的需要一个接口,而你的参数是一组值,我真的会建议接收一个数组并检查该数组中项目的数量和类型。

+0

我想接口对我的目的来说太严格了。尽管如此,我现在还不认为有一种方法可以说我的类有太多的方法来接收一定数量的整数 – marcosh

-1

如果参数不同,而方法名称相同,那么它的界面就不一样了。这很简单。

您正试图在方孔中放置圆形钉。

+0

是的,这里的接口太多了。我可以做的是有一个空的界面,只是为了命名的东西。或许多接口,每个参数数量一个。尽管如此,这些并不是很好的解决方案 – marcosh

+0

而不是将每个参数分开,您可以改为传入实例。 –