你可以传递比函数预期更多的参数吗?

时间:2011-05-18 21:36:20

标签: php parameter-passing

如果有两个类扩展相同的基类,并且需要使其中一个类覆盖一个函数来获取另一个参数。在任何一个类上调用函数时总是传递附加参数是否可以?

一些伪代码,以帮助演示......

如果我们有3个类和函数

  • FOO :: doSomething的()
  • foo_subclass_one :: doSomething的()
  • foo_subclass_two :: doSomething的($输入)

我有一个这三个中的一个的实例,我可以打电话 $ instance.doSomething($输入)

我想 - 发生的事情是foo和foo_subclass_one会忽略附加参数,而foo_subclass_two会使用它。它是否正确?如果我有很多子类并且真的想避免触及10个以上的文件,我有更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:16)

是的,你可以。用func_get_args()

收集它们

答案 1 :(得分:5)

有两种方法可以做到这一点:

扩展方法以使用默认参数:

public function doSomething($input=null) {}

请注意,您需要为所有实例执行此操作,即使未使用它也是如此。

在这种情况下,您可能希望使用方法的arguments数组:

public function doSomething() {
  $args = func_get_args();
  if (isset($args[0])) { $this->doSomethingElse();
}