If you’re like me, you think CodeIgniter is pretty nice. You also probably hate typing _model every time you load or call a method or property from your models, because it’s ugly and time-consuming.
I’ve been searching for a solution to this for a couple hours with no luck – so I put together a quick fix.
This is because CodeIgniter does not support namespaces. While there have been discussions of namespace support in CI for some time, support in the stock codebase is still forthcoming.
The solution? Prefix your controllers instead! In typical usage, you’re unlikely to need to type the name of the controller more than once per file.
First edit application/config/routes and add the following line after all the other routes:
With this rule, you route the first segment of the URI to the matching controller with your prefix. So that:
maps to the following controller:
Next, rename your controller files with this prefix, as well as altering the class names inside to match.
That’s it! Now you can name your models with relative freedom. You can rename your models at your leisure, but don’t forget that you need to change each model’s filename, each model’s class name, as well as all references to each model. This is easily the most time-consuming step, but on the plus side you don’t have to do it all at once.