- array_slice: documentation ( source)
<?php
class BaseFoo {
}
class Foo extends BaseFoo {
protected function greet($subject) { echo "Hello $subject!"; }
public function callStatic($className, $methodName) {
$parameters = func_get_args();
$parameters = array_slice($parameters, 2); // Remove $className and $methodName
return call_user_func_array($className . '::' . $methodName, $parameters);
}
}
class Bar extends Foo {
public function publicGreet($subject) {
$this->callStatic(parent, 'greet', $subject);
}
}
$b = new Bar();
$b->publicGreet('World');