public static function callStaticMethod($class, $method, $args, $check_mock = false)
{
if ($check_mock && isset(self::$mocks[$class][$method])) {
if (self::$debug) {
self::debug("Intercepting call to {$class}::{$method}");
}
return (new SoftMocksFunctionCreator())->run(null, $class, $args, self::$mocks[$class][$method]);
}
try {
$Rm = new \ReflectionMethod($class, $method);
$Rm->setAccessible(true);
$decl_class = $Rm->getDeclaringClass()->getName();
if ($check_mock && isset(self::$mocks[$decl_class][$method])) {
if (self::$debug) {
self::debug("Intercepting call to {$class}::{$method}");
}
return (new SoftMocksFunctionCreator())->run(null, $class, $args, self::$mocks[$decl_class][$method]);
}
} catch (\ReflectionException $e) {
if (method_exists($class, '__callStatic')) {
$Rm = new \ReflectionMethod($class, '__callStatic');
$Rm->setAccessible(true);
return $Rm->invokeArgs(null, [$method, $args]);
}
return call_user_func_array([$class, $method], $args);
}
return $Rm->invokeArgs(null, $args);
}