То, что вы пытаетесь сделать, эквивалентно следующему:
"do_{$something}" = $func();
$func = "do_{$something}";
Что, очевидно, имеет синтаксические ошибки.Ваш второй блок кода плохо читается, так как вы перезаписываете переменную имени функции результатом вызова функции.Более чистый способ сделать это будет:
$result = call_user_func('do_' . $something);