Я пытаюсь упростить этот метод. Он в основном принимает действие (string), превращает строки с пунктирной линией / подчеркиванием в camelCase и затем проверяет, эквивалентен ли результат нативной функции php, если это так, он получает подчеркивание перед. Я думаю, что все это может быть одним регулярным выражением, но я не уверен, как я проверю function_exists. Любая помощь с благодарностью!
public function getMethod($action){
if (strpos($action, '-') !== false){
$action = str_replace(' ', '', ucwords(str_replace('-', ' ', $action)));
$action = lcfirst($action);
}
if (strpos($action, '_') !== false){
$action = str_replace(' ', '', ucwords(str_replace('_', ' ', $action)));
$action = lcfirst($action);
}
// resolves native function names with underscore
if (function_exists($action)) return "_".$action;
else if ($action == 'list') return '_list';
else if ($action == 'new') return '_new';
else if ($action == '') return 'index';
else return $action;
}