How can you even compare Joomla to everything else out there. Joomla is the worst attempt at MVC I've seen to date, obviously by people who have no real understanding of the pattern or are very inexperienced with it.
Quite easy actually. It's MVC in a nut shell -- it's implementation might be iffy as are the dependencies -- but I've seen a lot worse (ie: WordPress).
The framework will invoke your controller -- which is derived from their base controller class. Your controller:action method is invoked by a default router/dispatcher (or custom) and from there everything you effectively echo is injected into the component block of the template.
The component architecture in this regard, is fairly standard. I don't need to fret about anything like setting up basics/boilerplate code -- I just derive a class from JController create a method named whatever and inside that controller I have full control over how or where or when my models and views are used. Joomla has arguably the best component/plugin support when compared to other CMS.
Granted it's not the most elegant solution and there are tons of caveats -- but at the conceptual level it's MVC as I can choose how dependent my views are on my models, etc.
I'm willing to bet Joomla will do model auto-loading (I prefer to instantiate models manually) -- I'm quite certain it does auto-view loading too -- but again I can override that easily and instantiate my own view classes so the separations at this point are as clean and concise or as cluttered and confusing as I want them to be.
Those though can be turned off very easily
I don't know about disabling but you can just ignore them in the controller, like I do. I don't call any controller methods and rely on default routing. Joomla is also a more robust framework. Perhaps a little to ro
bust.
On the other hand they have a much better implementation of the MVC pattern
Without getting into details -- yes probably. Still to complex and to many dependencies for my tastes so their all puke if you ask me.
Anyways, Joomla component architecture is still worth knowing/studying. The fact they separate components from modules and restrict components to a single instance per page is a best practice -- no point in re-inventing the wheel using Zend only to later discover "why" Joomla enforces this.
I keep getting the feeling you have very limited expereince with frameworks outside of Joomla from the way you keep mentioning it. How much experience do you have developing with the ZF or cakephp?
Interesting. Have you searched the history of framework discussions on these boards, or maybe the codeproject? I've been using/studying frameworks for more than 10 years...I think I am probably more familiar with CodeIgnitor/Cake/Zend/Symphony/etc than you think I am.
I mention Joomla only because it's 'component' architecture is done right -- I say this in confidence having implemented and worked with countless CMS over the years -- it's what I specialize in...
I used Zend when it was first released. I played with it over a few months and encountered some issues I didn't like, chewed them over with others on here and ultimately decided to start my own framework. For commercial projects I use Joomla because it has a huge community and clients like to hear that stuff.
CakePHP I have only glanced at...enough to know I don't like it with it's management of dependencies/complexities, etc
I think maybe you are midunderstanding what is meant by component architecture (where MVC is somewhat implied) -- at least from the perspective of RAD. A component is implemented using the MVC -- regardless of whether the view is an included template or a class with a distinct API which the controller might instantiate and manipulate. The more concise the interface the happier I am -- but including a template works too and the most important separations are take care of -- explicitly rather than implicitly.
http://book.cakephp.org/view/50/Introduction
Read those first few paragraphs:
In CakePHP, controllers are named after the model they handle, in plural form.
Puke.
Your application's controllers are classes that extend the CakePHP AppController class, which in turn extends a core Controller class.
Deep hierarchy. WHat kind of functionality could possibly be required by every single controller ever invoked -- or is there massive amount of overhead -- I assume more than I care for.
Zend, Cake, Symphony, CodeIgnitor...are not like Joomla at a framework perspective. Joomla throws a lot more at you which is why new developers tend to think Joomla sucks when compared to Zend -- it's more complex.
You lose some control, that is a consequence behind using frameworks.
Cheers,
Alex