Symfony is one of the oldest PHP frameworks concieved for developing awesome web applications. With the release of version 2, the framework brings a lot of innovation in the PHP web application industry. The Symfony community has always been innovative and created cool things for the PHP world. The latest release of Symfony, the Symfony2 pushes the boundary of innovation one step further.

So what is Symfony2?

— It is a full stack framework
— It implements the MVC pattern
— It is highly decoupled

But according to Fabien Potencier, the creator of Symfony, it is all about two key issues:

— Symfony2 is a reusable set of standalone, decoupled, and cohesive PHP components that solve common web development problems.

— Then, based on these components, Symfony2 is also a full-stack web framework.

So what does this actually mean? It means that instead of trying to become a full stack framework at the first place, Symfony2 considers itself as a bundle of components which are decoupled and standalone. You can use these components in your non Symfony apps as well.

Based on these components, Symfony provides all the functionality of the a full stack web framework. Symfony might or might not be called a MVC framework since it handles the Controller part, it handles the Views but offers nothing for the Model part. In Symfony2, they allow you to build models by hand, may be using an ORM. Not to mention they ship the Doctrine ORM, the best ORM for PHP. So, MVC or not, Symfony doesn’t make much difference. However, the framework aims at maintaining the “separation of concerns” theories. The creator of Symfony calls it to be a “Http Framework” or a “Request and Response framework”.

The best thing about Symfony2 is that the codebase is rock solid and the components are re-usable. Here are some examples of software and libraries that are currently using some of the Symfony2 Components:

Silex: BrowerKit, CssSelector, DomCrawler, EventDispatcher, HttpFoundation, HttpKernel, Routing, Form, Translation, Validator

Goutte: BrowserKit, DomCrawler, CssSelector, Process, ClassLoader, Finder

Behat: Console, DependencyInjection, EventDispatcher, Finder, Yaml, Config, Translation

Assetic: Process

Doctrine2: Console, Yaml

Propel2: Console, ClassLoader, Yaml

PHPUnit: Yaml

FLOW3: Yaml

Midguard CMS: most of them in their next version?

phpBB 4: most of them?

Drupal 8*: ClassLoader, HttpFoundation, HttpKernel?

In our next post, we shall start learning more about Symfony2 🙂