Symfony in a Nutshell

Symfony is a term related to software development with the PHP language. Symfony is a set of components and an HMVC (Hierarchical Model View Controller) framework to be used in PHP programming. It released under the MIT license as Open Source.

PHP is most commonly used for web development and command line scripting. It is the most popular server side language powering the web. Tools such as WordPress and MediaWiki are written with PHP. As a late development PHP has allowed creation and distribution of software components using Composer and the Packagist repository.

Symfony Components can be used to accelerate development with the PHP language by providing reusable functional elements that can be adopted into an existing application. The functionality of these components is of very good quality and they are very robust.

Drupal is the most commonly cited Content Management System that uses a number of Symfony Components - mixing legacy code and new components together. You could also use Symfony and other components to create a complete framework for yourself. Laravel and other popular web frameworks use Symfony components in many critical functions.

In addition to a collection of Components, the Symfony Full Stack Framework is a complete definition and structure for web applications. It is built with Symfony components and binds them together with a specific structure. The framework offers session management, translation and templating facilities and many other common utilities. The Symfony Debug Toolbar is also a commonly used component across projects.

While Symfony is often cited as a HMVC (Hierarchical Model View Controller) Framework, it is noteworthy that the Symfony Full Stack Framework does not, in fact, include the model layer at all. The Standard Edition of the framework can use ORM and ODM mappers like Doctrine or Propel for using with Relational Databases (such as MySQL) or Document Databases (such as MongoDB).

The Symfony Framework can also be used to gradually modernise old software by gradually modifying code within the system to be modern, while keeping the old components and external functionality intact. This is a good way of managing the technical debt in complex software. The best known case of such an undertaking is the transition of the eZ Publish Content Management System from a custom framework to the Symfony Framework.

Symfony is known for it's focus on quality, stability and backwards compatibility. The Symfony community releases Long Term Support (LTS) releases which are supported for three years. During this time the Semantic Versioning guarantees that an application built with 2.3.x, for example, will always be maintained. Compatibility is guaranteed for 2.3.x releases.

At the time of writing Symfony is at version 2.7.3, the next major version is 3.0 which is due to be released in late 2015. Transitioning applications from the Symfony 1 framework to Symfony 2 was a large effort, but the the step from Symfony 2 to 3 is an evolution. To prepare for Symfony 3, developers can work with version 2.7 and keep an eye on the log file displaying deprecation messages for functionalities that will no longer be available in Symfony 3.