Symfony is a PHP framework and a set of reusable PHP components. Fabien Potencier released the first version in 2005 as a way to package the libraries he was already using, and that origin still explains how it works: the framework is assembled from decoupled components — HTTP kernel, routing, dependency injection, form, validator, mailer, console — which can be used on their own or together. The components are widely reused elsewhere: Laravel is built on several of them, and Drupal’s Drupal 8 and later releases are built on Symfony itself. Symfony is released under the MIT licence, with a new minor version every six months, LTS releases maintained for years, and the current stable line at 8.1.
new chains and global state.Symfony is what you reach for when a PHP application has to stay maintainable for years and more than one team will work on it. The service container makes dependencies explicit, the event dispatcher and kernel give every part of a request a defined place, and upgrades are published as documented paths rather than surprise rewrites — with BC promises between minor versions and LTS releases for the slow-moving projects. It also scales down: the same components that power a large Symfony application can be dropped into a legacy script to give it routing, a request object or a console. The learning curve is not small — configuration, bundles and the container take deliberate study, and a small CRUD site will feel like more framework than it needs. The trade-off is deliberate: less magic in exchange for a structure that survives contact with a real team and a long support window.
Install PHP and Composer, then create a project with composer create-project symfony/skeleton my-app (or the symfony CLI from symfony.com/download, which also provides symfony serve). Run symfony check:requirements to see which PHP extensions and versions the current framework version expects. Add what the project needs with Flex: composer require symfony/orm-pack, composer require symfony/twig-pack, composer require --dev symfony/profiler-pack. Routes are attributes on controller methods, services are autowired from the container, and configuration lives in config/. Read the official documentation at symfony.com/doc for the current version, and use bin/console for cache, database and debugging commands.