Frameworks appear in most programming languages and there is often many different types per language. The idea of a framework is to provide a certain structure that the programmer must follow. This structure will usually include functionality that can just be called upon rather than the programmer having to write it from scratch. A lot of this functionality will be based around the mundane or highly replicated programming tasks enabling the programmer to concentrate on the core elements of the software that is being developed.
Frameworks are incredibly useful and can significantly speed up the development process. Due to the programmer having to follow a specific structure the end product should be a lot easier to maintain, have less bugs and use less code.
One major issue with frameworks is the time it takes to learn them. To get the most out of the framework you need to understand its full capabilities and structure which is very time consuming. They are also often limiting if you have not written it yourself and sometimes you will find yourself using part of the framework and then bolting on your own code.
In regards to the back end we program the core of the software in PHP & MySQL and since we want to have complete control and understanding of how this works we use our own framework that we have developed over time. Due to developing it ourselves we have been able to create it to just do exactly what we want and we all have an in depth knowledge of how it works making it very easy to update and improve.
A framework is definitely something l would suggest you use although l would write your own one if you plan to use the framework for the core parts of your code.