Best Practices PHP mvc routing
- by dukeofweatherby
I have a custom MVC framework that is in a constant state of evolution. There's a long standing debate with a co-worker how the routing should work. Considering the following directory structure:
/core/Router.php
/mvc/Controllers/{Public controllers}
/mvc/Controllers/Private/{Controllers requiring valid user}
/mvc/Controllers/CMS/{Controllers requiring valid user and specific roles}
The question is:
"Where should the current User's authentication be established: in the Router, when choosing which controller/directory to load, or in each Controller?"
My argument is that when authenticating in the Router, an Error Controller is created instead of the requested Controller, informing you of your mishap; And the directory structure clearly indicates the authentication required.
His argument is that a router should do routing and only routing. Leave it to the Controller to handle it on a case by case basis. This is more modular and allows more flexibility should changes need to be made by the router.
PHP MVC - Custom Routing Mechanism alluded to it, but the topic was of a different nature.
Alternative suggestions would be welcomed as well.