call_user_func_array('self::bar', func_get_args());
PHP 5.6 hat außerdem einen spread-Operator, womit man die obere Zeile leserlicher schreiben kann:
self::bar(...func_get_args());
In Kombination mit dem rest-Operator für variadische Funktionen kann man MBs Problem-Programm sehr einfach lösen:
class args {
static function bar(...$args) {
print_r($args);
}
static function foo(...$args) {
self::bar($args); // $args in bar = [['a','b']]
self::bar(...$args); // $args in bar = ['a','b']
}
}
args::foo('a', 'b');