There are already many variations of MVC, Symfony, Cakephp, Codeigniter themselves say they use MVC, but it is not the pure standard, they say this so as not to scare the community with the thousands of layers they have.
There are several layers that help the three main layers, such as a service layer between the controller and the model, object transfer layer known as DTO, repository, between the database and the model and so on.
Choosing a framework to develop an application is the main decision a developer can make. 'Cause it will either attach the system to the adopted model for the rest of its life, or be re-coded.
I recommend that you read on the blog of the creator of PHP, Rasmus Lerdorf, to criticizes what he does about frameworks fashion. He criticizes the creation of so many layers, and it would be possible the same thing in an organized way and with much more performance.
Below I mention other layers that you can study if you are interested.
Service
The service layer is between the controller and the models. In this layer will be the whole rule of business of an action, independent of a user interface. By using a service layer it is possible to isolate your business rules that involve more than data manipulation. Leaving the controller to handle the processing views need.
The main advantage would be the possibility to rewrite your entire user interaction layer, or even create several, without having to worry about the business rules.
A good example is the possibility of creating a web application and a mobile application communicating directly with the service layer, where each one would have its layers of views and controllers.
If you used pure MVC, a lot of code would have to be rewritten in the controllers, because the rules that View imposes on the controller may require different treatments or even returns.
DTO
DTO is actually a standard that helps you standardize communication data between layers, enabling in many cases the use of dependency injection.
Using DTO is an excellent way to program Apis or deal with webservices.
Repository
In the original concept of MVC, the model is responsible for the entire business rule of using the system’s information, so all manipulation and communication with the database is mixed in there. The repository layer appeared to separate communication from manipulation, leaving more readable and organized all the code of the model, besides allowing much reuse of code.
MVP
In short, it is a direct model between a View and Presenter layer. Think of an application where the view makes Javascript requests, and Javascript itself performs the entire business rule. It is a model that has been growing a lot due to the scalability that makes possible.
See the comparison between Frameworks in this model,
Learn the difference between MVC and MVP.
--
Although the above mentioned layers seem to be only patterns, they are present as true layers, even in the frameworks we use. An example is Doctrine that has the repository layer and Symfony create its template layers where all the code makes use of the repository layer to communicate with the database.
It is worth studying a little about each one to visualize well how the layers are separated.
Some other suggestions Hexagonal Architecture I don’t have much knowledge to say.
Xi! Only MVC architectures already exist several varied variations. The "original" MVC designed for desktop applications in Smalltalk used several small Mvcs for a screen -- similar to what some frontend frameworks have been doing. Humanity still does not know how to answer this question happily in the context of the Web, you’re in for Trouble, little man! =)
– elias
A website with only static pages takes the M from the MVC. It may look like something Jedi, but for simple websites that perform a single function, a database often doesn’t even make sense. As a website that calculates, translates or informs something.
– Alex
Can nothing really exist but the MVC and its collection of children or adaptations?!
– Calebe Oliveira
When talking about the subject in a stricter context of "web applications", templates (ex. XSLT, Smarty) and client-frameworks (eg. Bootstrap) are bugs that catch... giving the final face of their architecture.
– Peter Krauss