[eluser]Gordaen[/eluser]
I came across this thread while looking for something else, but it sparked my interest...
[quote author="Buda" date="1205560725"]I spent 3 months fixing CI bugs and re-designing the entire architecture of the framework. I was quite shocked to find out so many abnormalities and design errors.[/quote]
CI Bugs? Which bugs?
[quote author="Buda" date="1205560725"]1. 90% of the system is written in PHP 4, a deprecated version of the language.[/quote]
This was initially one of the reasons I was skeptical about going forward with CI, but I understand and respect the decision to stay with PHP4. I'll be happy when we can all move on.
[quote author="Buda" date="1205560725"]2. The framework doesn't have a Front Controller. Strangely, the application controller becomes the Front Controller, this means that the framework can only load one controller at a time (per request).[/quote]
I'm actually really curious to hear a real-world scenario in which you would have a front controller load multiple other controllers. I haven't come across a situation where that's been necessary.
[quote author="Buda" date="1205560725"]7. Circular reference: When the Front Controller (App. Controller) loads a model, the framework assigns to the model all the object properties of the Front Controller. This is the most obscure behaviour I found in CI.[/quote]
This makes coding for the framework a lot more consistent. *shrugs*
[quote author="Buda" date="1205560725"]8. The router.php file contains an array that uses the keys to store data and define regular expressions. If you define 100 elements, the Router class will loop through the entire array, extract the keys and execute 100 regular expressions.[/quote]
If there's a literal match, it's done instantly. Otherwise, yeah, it goes through all of them, just as you would expect it to. Is there a better method? Most frameworks use regular expressions for URI mapping, including Django.
When it comes down to it, I've found CI to be the best framework for down & dirty coding and for small to medium projects. Anything massive usually entails using symfony or django, but I prefer CI any time it makes sense. Coding for CI is easy and very clear, from my perspective, and it has an excellent user guide that's broken up into logical chunks. It doesn't do everything, nor does it do everything perfectly, but I have enjoyed using it much more than any other framework.