What is Symfony?
Symfony is a general purpose web application framework. In more layman’s terms, it is a system for building advanced customized websites and Internet software. It includes foundational programming libraries that give developers a jumping off point that enables focus on the details of the software to be written, instead of the tools needed to get off the ground.
Symfony is an open source project that was originally developed by Fabien Potencier and his company, Sensio Labs out of Paris, France. Today Symfony is supported by a worldwide collection of high achieving web and software developers who uphold higher standards for software architecture and testing than the majority of open source projects.
This worldwide group of developers have contributed numerous libraries of code, dubbed “bundles” in the parlance of Symfony, to advance the purposes of any developer familiar with the platform. Bundles exist for common needs like content management, database administration, search, templating, and many other software needs large and small.
How is Symfony different from WordPress or Drupal?
One way to imagine it is to compare WordPress and Drupal to a prefabricated home, and Symfony to a custom home.
With the prefab you can spruce up the interior, paint the exterior, and *maybe* move a wall or two if you really need to. With custom home, you start with milled lumber and other refined materials. You decide where everything goes.
Notice we called it *refined* materials, not *raw* materials. Raw would be starting with no framework at all, just the programming language itself, your axe, to chop down trees with. No thanks, I’ll skip that part.
Dropping the metaphor, WordPress and Drupal enforce a lot of pre-built structure on you. That’s fine if your needs fit nicely into that structure, but it’s not appropriate for projects that have unique requirements, many custom features, and which may grow in unpredictable ways.
Should my project be built with Symfony?
Maybe. Let’s consider the nature of your site and goals in order to determine the right platform.
First, if you’re just doing straight ahead e-commerce with a product catalog and shopping cart, then you will probably be best served by a focused e-commerce platform like Magento.
Next, if your site is for marketing your business, and will primarily contain information about your products and/or services, with the purpose of generating leads, but not too heavy on the interactive features for your customers, then again, WordPress or Drupal are probably the way to go.
Finally, if your site fits none of the above descriptions, then it is probably a good candidate for a framework like Symfony. Symfony is the right starting place for custom web applications. For instance, a custom database application for managing your business, a customer service portal, a corporate intranet, a new social network, an API that exposes your business data to vendors or customers.
When in doubt, let an expert with broad experience guide you. Find a developer who has built many sites with many different platforms, listen to their advice, and, as always, trust your intuition.
What are some Symfony tips and tricks?
- Discover the Sonata Project. The Sonata Project is one of the major sub-projects of Symfony. The developers involved have produced some very foundational bundles that nearly every Symfony project can benefit from. These include the Admin Bundle to develop the backend interface for your site, an SEO bundle, a News (blog) bundle, a Media bundle, and many more.
- Discover the CMF project. Symfony CMF provides a content management framework so that a content management system can be designed and developed on top of Symfony. This is a very powerful solution for sites that need to blend the features of a standard CMS with other custom requirements like internationalization / multi-lingual, a user log in system with advanced features and security, or other interactive systems.
Assetic is your friend. Assetic is a tool that integrates with Symfony to minify your JS and CSS. This practice will help to reduce page load times.
- Know your caching systems. Symfony provides tools for caching responses and objects of data within your system. Study the config_prod.yml file and the caching related articles in the Symfony documentation.