Sharing problems is a very important tenant for any type of software development, even on the Internet. Too many times I have found that people simply drop everything into as few files as possible and call it day. This is definitely the wrong way to do this. As already mentioned, this will help with code support for others, but more than that, it will help you read the code. When everything is separated, you can easily think.
The Ignitor code, I found, was the easiest to learn the PHP framework. To a large extent, I began my current work and worked with it for several days, never heard of it in order to use it quite effectively. I do not see another language in this. Basically, using a structure makes me organize things in a controlled way, and the added functionality is mandatory for using plugins, etc. For jQuery or for importing packages in Java. The idea that he, like learning another language, seems almost silly.
So, in a word, organize to organize an organization. Keep in mind, however, that there is a level of abstraction that just becomes absurd. The rule of thumb is that the class (or file in our case) should do something very well. This does not mean that it is a class that wraps printing, but takes a string, formats it using a complex algorithm, and then prints it (this is just an example). Each class must do something specific, and you can do it without any frameworks. What makes MVC great, though, is that it allows you to organize things further, not only at the level of one class, but also at the level of the “packages” that are Model, View and Controller (at least in the case of these frameworks; there are other ways of batch projects). So, now you have separate classes that work well, and then you group them with similar classes that do other things well. Thus, everything is supported very cleanly managed.
The last level to think about when you have things organized into classes and then packages is how these classes gain access between packages. When using MVC, access will usually pass through Model ↔ Controller ↔ View, thereby separating the model (usually this is database material and business code in the PHP world) from the view (which usually receives information from the user and passes it along with the controller, which then will receive additional information from the model, if necessary, or will do something else with the input information). A controller type acts like a switch between two other packets normally . Again, there are other ways to go with packaging, etc., but this is the usual way.
I hope this helps.