我知道标题有点混乱,但这是我所能做的最好的事情。= P
希望有人能够提供帮助。
我正在使用CodeIgniter,并且在具有多个参数的基类中有一个方法:
class MY_Base extends CI_Model {
function some_function($param1, $param2 ... $param8) {
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的基本上是在一个子班上:
class Child extends MY_Base {
function some_function($param1, $param2 ... $param8) {
parent::some_function($param1, $param2 ... $param8);
// call a methods found in this class only
$this->some_method();
}
function some_method() {
// do more stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我无法触及基类,因此必须从基类进行扩展。问题是,参数太多。而且这也发生在不同的方法中,有时我会忘记使代码失败的方法。
所以我想知道,是否有办法这样写:
function some_function(__PARAMETERS__) {
parent::some_function(__PARAMETERS__)
}
Run Code Online (Sandbox Code Playgroud)
我似乎隐约记得这是可能的,但我在Google中找不到。可能是因为我搜索了错误的关键字。
任何帮助,将不胜感激。
编辑:然后,当然,我func_get_args()在发布此问题后找到了。这似乎可以满足我的要求,但是我会把这个问题留给大家更好的主意。
function some_function($a, $b, $c) {
call_user_func_array('parent::some_function', func_get_args());
}
Run Code Online (Sandbox Code Playgroud)
警告:PHP> = 5.3
甚至:
function some_function($a, $b, $c) {
call_user_func_array('parent::' . __FUNCTION__, func_get_args());
}
Run Code Online (Sandbox Code Playgroud)
对于PHP> = 7.0,我使用:
parent::{__FUNCTION__}(...func_get_args())
Run Code Online (Sandbox Code Playgroud)