public static function toCamelCase($p_str, $p_first = false, $p_glue = '_')
    {
        if (trim($p_str) == '') {
            return $p_str;
        }
        if ($p_first) {
            $p_str[0] = strtoupper($p_str[0]);
        }
        return preg_replace_callback(
            "|{$p_glue}([a-z])|",
            function ($matches) use ($p_glue) {
                return str_replace($p_glue, '', strtoupper($matches[0]));
            },
            $p_str
        );
    }