Base::grab PHP Method

grab() public method

Grab the real route handler behind the string expression
public grab ( $func, $args = NULL ) : string | array
$func string
$args array
return string | array
    function grab($func, $args = NULL)
    {
        if (preg_match('/(.+)\\h*(->|::)\\h*(.+)/s', $func, $parts)) {
            // Convert string to executable PHP callback
            if (!class_exists($parts[1])) {
                user_error(sprintf(self::E_Class, $parts[1]), E_USER_ERROR);
            }
            if ($parts[2] == '->') {
                if (is_subclass_of($parts[1], 'Prefab')) {
                    $parts[1] = call_user_func($parts[1] . '::instance');
                } else {
                    $ref = new ReflectionClass($parts[1]);
                    $parts[1] = method_exists($parts[1], '__construct') && $args ? $ref->newinstanceargs($args) : $ref->newinstance();
                }
            }
            $func = [$parts[1], $parts[3]];
        }
        return $func;
    }