我试图称呼祖父母的功能。
出于这个原因,我需要在父类中创建相同的函数。
这是我的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);
}
}
问题:
当我更改函数的参数时,我也需要在每个子类中更改它们。
对于我的父级是否有更有效的方法,所以我不需要在那里更改任何内容?
答案 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);