如果有两个类扩展相同的基类,并且需要使其中一个类覆盖一个函数来获取另一个参数。在任何一个类上调用函数时总是传递附加参数是否可以?
一些伪代码,以帮助演示......
如果我们有3个类和函数
我有一个这三个中的一个的实例,我可以打电话 $ instance.doSomething($输入)
我想 - 发生的事情是foo和foo_subclass_one会忽略附加参数,而foo_subclass_two会使用它。它是否正确?如果我有很多子类并且真的想避免触及10个以上的文件,我有更好的方法吗?
谢谢!
答案 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();
}