Jim - I’m thrilled to see where your guidance brings CodeIgniter to.
For a full-stack PHP framework, even today, I think the things that CodeIgniter has going for it are:
* simplicity of use/maintainability
Yes, I think there are things that could be added and refactored. I think a lot of the things that Phil’s article touched are are good things, but, quite frankly are not necessary things.
Autoloading is wonderful to use, but CI has always been on the declarative end of the declarative/hidden-magic spectrum. I would love to see it PSR-4 namespaced and added to packagist for easy installation. Integrated with Composer is a must (remove that thing about the command line from the ‘about’ section!). It would be simple to classmap the existing CodeIgniter code. Though if you’re namespacing, it’s done for you there. The Loader could even be integrated into Composer for the heavy lifting, since it already generates fast classmaps when you use the optimize flag.
Basically, I think it’s very possible to keep the simplicity and maintainability while updating it to more current standards. Frameworks like Laravel get so complex in the layers upon layers that they lose some of what they were originally brought about for: developer ease and enjoyment. Don’t get me wrong, I’ve used Laravel and Symfony both and they’re both very good frameworks, but they’re both “enterprise-level” frameworks and what most of use these frameworks for is NOT enterprise-level stuff.
When you start going through all of those layers with coding best practices that were developed around compiled-languages, not interpreted languages, things get slow, so you have to rely on a bunch of tricks and hacks and additional layers to make them snappy again. I do think that many of these best practices are good, but in interpreted-language development, I think we have to find the middle ground that keeps performance while still being maintainable. For the most part, CI does a fair job at that, it’s just gotten a little old around the middle and needs a good workout. 😊