Use them to define specific routes that aren't managed by controllers.
Use them when you want to use traditional MVC architecture
I think Solution to your problem
You don't register controllers as routes unless you want a specific 'named' route for a controller action.
Rather than create a route for your controllers actions, just register your controller:
Now your controller is registered, you can navigate to http://localhost/mysite/public/user and your get_index will be run.
You can also register all controllers in one go:
Hope this works fine