public static function __callStatic($name, $arguments)
{
$class = get_called_class();
// protected shared methods has `_` prefix to identify
$name = "_{$name}";
if (!method_exists($class, $name)) {
throw self::generateException("{$class} has no such method!");
}
return forward_static_call_array('static::' . $name, $arguments);
}