Channels ▼

Web Development

Symfony in PHP Major Components

Open source PHP web app development framework Symfony is charging its developer community batteries in a busy month. This September sees the Symfony Live London event staged, the release of Symfony 2.1.0 RC2, and the arrival of the Symfony 2.0.17 iteration.

Originally conceived by Sensio Labs for the development of websites for its own customers, the product now exists as a full stack framework, Symfony2 is also a collection of standalone components that can be used on their own outside the framework.

The framework is, in a sense, a "pick and mix" of components that can be used as a part of smaller projects. As such, they are introduced as a way of refactoring legacy code and can even be incorporated as part of other frameworks. Symfony components are already being used in libraries such as Doctrine2 (an Object Relational Mapper for database abstraction) and Guzzle (a PHP HTTP Client) as well as PHPBB4, the PPI Framework, and EZPublish.

NOTE: Symfony Live London features workshops for both beginners and experts. There will be conference talks from key members of the community including creator of Drupal Dries Buytaert. Attendees also have the chance to sit an exam to become certified Symfony developers.

To demonstrate its growth, Drupal developers are also incorporating Symfony2 components into Drupal 8, a step that Sensio suggests has the web community debating what Symfony2 can bring to the table.

According to Yair Spitzer, CEO of Sensio Labs UK, "Drupal developers have always prided themselves on innovation and are constantly looking for new ways to improve and better their model. Developers who have previously shied away from using the Drupal framework will be encouraged by the inclusion of Symfony components to further push innovation and improve code quality. Nevertheless, Drupal is growing fast and with demand for it ever increasing, adopting Symfony's many reuseable components has enabled them to enhance their own strong architecture with another strong architecture."

How We "Innovated" PHP

Symfony's developers insist that it has tried to "bring innovation to PHP" as it was one of the first major frameworks to embrace PHP 5.3, to introduce the usage of a Dependency Injection container, and to use a templating engine for its templates by default, Twig, which is now also adopted by major CMSes like Drupal and eZpublish.

It also looks outside PHP to draw inspiration from the best practices, libraries, and frameworks of other languages — Java, Python, etc. Symfony2 focuses on best practices and writing clean, readable, and testable (and well tested) code. The use of Dependency Injection along with the service container and event dispatcher make for flexible code that you can build on to ensure your application has high standards of code quality.

Symfony project developer Fabien Potencier blogs this week saying, "I've just released the second release candidate for Symfony 2.1.0. This release contains several security fixes related to the way XML is handled, and as such, we recommend everyone to upgrade. These issues have been also fixed in Symfony 2.0. After upgrading, run the web/config.php script from your browser and theapp/check.php script from the CLI to check if your PHP environment is setup properly. As we have added new checks, you might find some stuff to tweak."

Symfony2 favors configuration over convention so it can be reconfigured to suit the needs of a project. In the interests of freedom and happiness in the Open Source community, the framework is not in competition with any other frameworks as Symfony2 can be incorporated into any other framework to develop and enhance it.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.