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

Mik*_*e K 12 php parameter-passing

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

一些伪代码来帮助演示......

如果我们有3个类和函数

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

我有这三个中的一个的实例,我可以调用$ instance.doSomething($ input)

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

谢谢!

Jag*_*age 17

是的你可以.收集他们func_get_args()


Joh*_*een 6

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

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

public function doSomething($input=null) {}
Run Code Online (Sandbox Code Playgroud)

请注意,即使未使用,您也需要对所有实例执行此操作.

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

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