[eluser]Pygon[/eluser]
Just a note Buda -- I hope you're aware that these are your
opinions of shortfalls in the framework. I have opinions too.
Quote:1. 90% of the system is written in PHP 4, a deprecated version of the language.
As discussed, PHP5 is not the only version of PHP in use by companies. Claims that anyone developing in PHP4 are irresponsible is a complete falacy. I guess you just turn away any clients that come your way REQUESTING something written in PHP4 because they aren't in a place to update their systems to make *you* happy (though TBH I wouldn't be suprised if you said you did).
Quote: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).
I think this is what it should be. A user takes ONE action, which is mapped to ONE controller, which is provided by ONE request. The perception of multiple actions doesn't translate to HTTP.
Quote:3. The CodeIgniter/CodeIgniter.php file is not a class, it should be part of the bootstrapper file, index.php.
I'm not really sure how you want to weigh heavily upon code maintenance and re-usability, yet are just fine with having multiple copies of the same code thrown into seperate bootstrap files. You do realize that you can use multiple applications on the same CI codebase and only need to lightly modify the bootstrap which will in turn re-use this code, right?
Quote:4. MyController > Controller > CI_Base. There’s no point of having 3 levels of inheritance. The only purpose of CI_Base is to return a single instance of the Controller, so it should be part of the Controller.
This falls back to your issues with people using PHP4; multiple CI_Base objects are required because multiple versions of PHP are supported. This is necessary, unless you want more wasteful code like you do in #3.
Quote:5. Namespaces: The Controller class doesn’t follow the naming convention, it’s not prefixed with CI_ like the rest of the core classes. This makes CI’s namespace support very unreliable.
This is debateable. I understand your
opinion on this, but I also realize that models and controllers are *products* of the framework, not part of the framework.
Quote:6. The application controller acts as a Front Controller and Registry, it’s used to stores all the objects the framework needs.
This is just utterly wrong. The CI global object does this.
Quote: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.
Wrong again. Seriously? When a model is loaded, it inherits a reference to each of the CI global objects loaded libraries, allowing the framework objects and methods to appear locally in both models and controllers and allowing us to use $this->object->method rather than declaring "global $CI" everywhere and calling $CI->object->method.
Quote: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.
I can't really argue with this one, and most of us are probably in agreement that there should be a better way.
Quote:9. Common.php is not a class, it should be moved to the helpers/ directory and renamed to something more appropriate, like mvc_helper.php for example.
Common functions are required for the framework to operate, "helpers" are not.
Quote:10. Very poor OOP and almost no design patterns makes this framework very difficult to extend and maintain.
I've seen some bastardized implementations of Zend and other frameworks too -- it doesn't mean that they were any more or less "MVC" or pattern-friendly.
Honestly, it really doesn't sound like you took an *objective* approach to this framework. Your pre-conceived notions as to how things should work and some of the response have the air of the elitest programmer mentality ("What I think is right, period" type of view). Statements like "but if you are still developing using version 4, that’s very irresponsible and unprofessional" are themselves irresponsible and unprofessional. I might *suggest* that a business owner consider an upgrade to PHP5, but that's the end of it. If they aren't in a position, far be it from me to be an elitest prick of a programmer and tell them, "then you're shit out of luck and need to find someone else". Is this what you do, or are you "irresponsible and unprofessional" when the job calls for it?
Seriously and not to be an ass in any way, it sounds to me like you're the type of person who only thinks *your* opinion is the right way to do something. I'm also going to go out on a limb and say that you're probably of the opinion that PHP wasn't a "real" language until it got the object polishing of version 5..
I hope you're not like that, but just so you know, that's how you sound (in my opinion).