如何用相同的参数调用函数?

时间:2013-08-03 17:52:09

标签: php oop

我试图称呼祖父母的功能。

出于这个原因,我需要在父类中创建相同的函数。

这是我的granparent的代码:

class GP{
    public function validate(&$data, $source, $operationData=null){
        ...
    }
}

这是我孩子的电话:

class child{
    public function doSth(){
        parent::validate(array(...), "user", true);
    }
}

为了达到祖父母的功能,父母使用此代码:

class parent{
    protected function validate(&$data, $source, $operationData=null){
        return parent::validate($data, $source, $operationData);
    }
}

问题:

当我更改函数的参数时,我也需要在每个子类中更改它们。

对于我的父级是否有更有效的方法,所以我不需要在那里更改任何内容?

2 个答案:

答案 0 :(得分:1)

祖父母类中的方法使用public修饰符,您的子(以及孙子,曾孙等)类将继承此方法。所以,没有必要写这个:

protected function validate(&$data, $source, $operationData=null){
    return parent::validate($data, $source, $operationData);
}

删除此声明,GP的任何子类都可以在validate()课程上调用GP

举一个简短的例子,请考虑以下代码:

class GP {
    public function foo() { echo 'Hello, world!'; }
}
class P extends GP {}
class C extends P {
    public function call_foo() {
        $this->foo();
    }
}

使用子类的对象:

$o = new C;

您可以在对象上调用foo()方法:

$o->foo();

或在课堂内:

$o->call_foo();

答案 1 :(得分:0)

您不需要编写参数,您可以通过func_get_args()获取所有传递的参数,或者通过func_get_arg(数字)获取一个参数

可以传递给他们: $ parent_class =了get_parent_class($本); call_user_func_array(array($ parent_class,'walk'),$ args);