I'm guessing that:
- because the app knows what controller method to call (via routing)
- it can find out what type (Eloquent) the first argument is (through reflection)
- it just does a
User::find($id)(the Eloquent parameter type) within the container, then - passes that, rather than the
id(URL parameter) to your controller method
Remember that controllers are constructed and called by the app, so it (not you) is responsible for passing parameters.
If you hadn't type-hinted the argument, the app / router / whatever it is that calls the controller, would just pass the id (route parameter).
Also, did your route mean to just be '{user}' ? Would you rather not something like 'user/{user}' ?