Maugrim_The_Reaper wrote:It's be a weird set of developers who insist there's a one true way to do MVC...

.
I hesitated on contributing to the discussion until now, but this comment lends itself to my point of view.
I get beaten down fairly often for using the phrase "seperating my html from my php". However, it comes from the fact that it is an accurate description of what I do, despite the hand-waving of various pundits.
Its not truly seperating view from the model or controller - because even the most basic dynamic content will have some form of logic operating in the template. Whether its a simple if/else for logged in users, or a "when date = easter, show eggs" item, almost all templates have some conditional, some logic, some processing.
That means that its not truly MVC. Some people prefer the more general pattern of Data/Logic/Presentation, but even that doesn't consistently apply - again, because the presentation layer will contain some processing.
In other languages, you can honestly get much closer to a true MVC or DLP seperation, which is why those patterns are idealized.
Applying them rigidly in PHP is simply a recipe for inaccuracy or disaster. Which is why I prefer saying I'm seperating my html from my php. In my templates, you find (mostly) raw html. You don't find it in my php files (once I'm done converting them). So my statement IS accurate, if a little simplistic and confusing at the same time.
My advice with MVC, and with OOP, and with pretty much everything else in programming, is to take it in moderation. So you can't get absolutely pure MVC seperation, so what?
The reason patterns exist is because over time, multiple programmers have faced the same problem, and found similar solutions, and found few flaws with them. Its a bit like science - you might find other solutions, but there might be flaws with it, so it doesn't become a pattern.
Similarly, once a pattern is used widely enough, it becomes a standard. If it remains long enough, it could even become "best practice", recommended widely by virtually everyone.
But its crucial to remember that while patterns and standards are generally correct, in the majority of cases, they do not always make the best solution to YOUR problem. Thats why MVC purists don't belong in PHP - because the language, at its core, is designed to mix all three. It started as a templating language with db hooks, and everything that has come since is simply a refinement of that core.
Or put much more simply:
All generalizations suck.