MVC pattern has long been on the market, but many use it in different ways.
Server Environment needs
M (Controller can connects with different objects):
2th layer of business-logic
Get, Set, Data processing
Adapters (for easy work with other services)
V = templating, head, footer-scripts, parts
C = easy code and first layer of business logic
+L = Libraries (for advanced and third-party components)
In fact, many understand the model like functions/classes with work with data and turns each data processing and then it is a kind of internal services. It is desirable that they were not bound strongly and the code would be easily expanded.
Views in web development often consists of head tags and scripts that are not a View and they have to separate into individual files.
Also view should be easily divided into parts to scale the project.
Controller is a very important element of the bundle. It is the distribution of reactions to customer requests. And often the first stage of this distribution performs Rotuting, and then later in the method of the controller collects all necessary data and placed in the View.
We consider this the optimal architecture. Each area can use OOP, classes inherit from abstract and complicated, but it is important to respect the boundaries that would easily extend the code and was convenient for teamwork.
Many frameworks support such architectures and many neat developers build the programs by this principles.
If the program elements in code are mixed, we are recommended to make refactoring as soon as possible and development process can grows significantly.
Thank you for attention.
If anyone knows other good architectures, please write in the comments your opinions, thank you.