Использование фреймворков позволяет существенно упростить процесс разработки веб ресурсов. Одним из наиболее мощных фреймворков является Symphony. Этот веб фреймворк представляет собой набор классов, которые помогают разрабатывать веб‑приложения. Он имеет гибкую конфигурацию с использованием YAML, XML или аннотаций. Также Symfony можно интегрировать с независимыми библиотеками и PHP Unit. Компоненты Symfony используются во многих проектах с открытым исходным кодом, включая Composer, Drupal и phpBB.
Ниже представлены ключевые фичи фреймворка Symphony.
Система на основе Model‑View‑Controller
Высокопроизводительный PHP‑фреймворк
Гибкая маршрутизация URI
Многократно используемый код легче поддерживать
Управление сессиями
Ведение журнала ошибок
Полнофункциональные классы баз данных с поддержкой нескольких платформ
Поддержка активного сообщества
Набор разделенных и многократно используемых компонентов
Стандартизация и совместимость приложенийЗащита от подделки межсайтовых запросов и других атак
Благодаря этим фичам фреймворк завоевал большую популярность среди разработчиков веб ресурсов и далее мы рассмотрим основы работы с Symphony Framework.
Архитектура Symfony
Фреймворк Symfony представляет собой коллекцию компонентов и наборов. Компоненты — это набор классов, предоставляющих одну основную функциональность. Например, компонент Cache предоставляет функциональность кэша, которую можно добавить в любое приложение. Компоненты — это строительные блоки приложения Symfony. Symfony имеет 30+ высококачественных компонентов, которые используются во многих PHP‑фреймворках, таких как Laravel, Silex и т. д.
Пакеты похожи на плагины, но их легко создавать и просто использовать. Фактически, приложение Symfony само по себе является пакетом, состоящим из других пакетов. Один пакет может использовать любое количество компонентов Symfony, а также компоненты сторонних разработчиков для обеспечения таких функций, как веб‑фреймворк, доступ к базе данных и т. д. Основной веб‑фреймворк Symfony — это пакет под названием FrameworkBundle, а также есть пакет под названием FrameworkExtraBundle, который предоставляет более сложные возможности для написания веб‑приложения.
Взаимосвязь между компонентами, бандлами и приложением Symfony показана на следующей схеме.

Веб-фреймворк
Веб‑фреймворк Symfony предоставляет все высокоуровневые функции, необходимые для приложений корпоративного уровня. Ниже приведен простой рабочий процесс веб‑приложения Symfony.

Рассмотрим представленный рабочий процесс более подробно.
Шаг 1 — Пользователь отправляет запрос к приложению через браузер, например на http://www.symfonyexample.com/index.
Шаг 2 — Браузер отправляет запрос на веб‑сервер, например, на веб‑сервер Apache.
Шаг 3 — Веб‑сервер передает запрос на PHP, который, в свою очередь, отправляет его на веб‑фреймворк Symfony.
Шаг 4 — HttpKernel является основным компонентом веб‑фреймворка Symfony. HttpKernel разрешает контроллер данного запроса с помощью компонента Routing и направляет запрос целевому контроллеру.
Шаг 5 — Вся бизнес‑логика происходит в целевом контроллере.
Шаг 6 — Контроллер взаимодействует с Model, которая, в свою очередь, взаимодействует с Datasource через Doctrine ORM.
Шаг 7 — Как только контроллер завершает процесс, он либо сам генерирует ответ, либо через View Engine, и отправляет его обратно на веб‑сервер.
Шаг 8 — Наконец, ответ будет отправлен веб‑сервером запрашиваемому браузеру.
На этом с теорией мы можем завершить и перейти к рассмотрению процесса установки и настройки.
Установка и базовая настройка
Прежде чем перейти к установке, необходимо установить один из следующих веб‑ серверов:
WAMP (Windows)
LAMP (Linux)
XAMP (Multi‑platform)
MAMP (Macintosh)
Nginx (Multi‑platform)
Microsoft IIS (Windows)
Встроенный веб‑сервер разработки PHP (Multi‑platform)
При этом как можно понять из списка веб‑серверов мы можем использовать различные версии ОС. Также мы можем использовать различные браузеры: IE (Internet Explorer 8+), Firefox, Google Chrome, Safari, Opera.
Совместимость с PHP начинается с версии PHP 5.4 или более поздних, но чтобы получить максимальную отдачу, лучше используйте последнюю версию.
Symfony Installer используется для создания веб‑приложений на фреймворке Symfony. Для его установки выполним следующие команды:
$ sudo mkdir -p /usr/local/bin
$ sudo curl -LsS
https://symfony.com/installer
-o /usr/local/bin/symfony
$ sudo chmod a+x /usr/local/bin/symphony
После установки инсталлятора проверим его работу, создав простое приложение.
Для этого выполним:
symfony new app_name
Здесь app_name — это имя вашего нового приложения. Вы можете указать любое имя по своему усмотрению.
Например, всеми любимый HelloWorld:
symfony new HelloWorld
После выполнения приведенной выше команды вы увидите следующий ответ:

В результате мы создали новую директорию firstapp/, содержащую пустой проект фреймворка Symfony последней версии.
Также, вы можете создавать приложения Symfony с помощью пакетного менеджера (composer). Для это воспользуйтесь следующей командой.
$ composer create-project symfony/framework-standard-edition app_name
Итак, мы создали наш проект, теперь начнем наполнять его содержимым. Для начала перейдите в каталог проекта и запустите приложение с помощью следующих команд.
cd HelloWorld
php bin/console server:run
После выполнения приведенной выше команды откройте браузер и запросите url http://localhost:8000/. Это должно привести к следующему результату.

Установка компонентов
Как уже говорилось ранее, компоненты Symfony — это отдельные PHP‑библиотеки, предоставляющие определенные функции, которые могут быть использованы в любом PHP‑приложении. В настоящее время во фреймворке Symfony насчитывается 30+ высококачественных компонентов.
Компоненты Symfony могут быть легко установлены с помощью команды composer. Для установки любого компонента Symfony можно использовать следующую общую команду:
cd /path/to/project/dir
composer require symfony/<component_name>
Давайте создадим простое php‑приложение и попробуем установить компонент Filesystem. Для этого выполним:
cd /path/to/dev/folder
mdkir filesystem-example
cd filesystem-example
Компонент Filesystem предоставляет основные системные команды, связанные с файлами и каталогами, такие как создание файлов, создание папок, проверку существования файлов и т. д.
Установим компонент Filesystem с помощью следующей команды.
composer require symfony/filesystem
Установив все необходимое для работы нашего приложения, создадим файл main.php со следующим содержимым.
<?php
require_once DIR . '/vendor/autoload.php';
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOExceptionInterface;
$fs = new Filesystem();
try {
$fs->mkdir('./sample-dir');
$fs->touch('./sample-dir/text.txt');
} catch (IOExceptionInterface $e) {
echo $e;
}
?>
Первая строка очень важна, она загружает все необходимые классы из всех компонентов, установленных с помощью команды Composer. Следующие строки используют класс Filesystem.
В завершение просто запустим приложение с помощью команды ниже, и оно создаст новую папку sample‑dir и файл test.txt в ней.
php main.php
Для следующего примера нам потребуются компоненты Finder и Console. В нем мы создадим команду HelloCommand с помощью компонента Console и вызовем ее.
Компонент Finder предоставляет удобные классы для поиска файлов и каталогов по заданному пути. Компонент Console предоставляет различные опции для легкого создания команд, которые могут быть выполнены в терминале. Symfony активно использует компонент Command для обеспечения различных функций, таких как создание нового приложения, создание пакета и т. д.
Для установки этих компонентов выполним:
composer require symfony/finder
composer require symfony/console
Далее создадим проект с помощью следующих команд.
cd /path/to/project
composer require symfony/console
Создадим файл main.php и добавим в него следующий код.
<?php
require DIR . '/vendor/autoload.php';
use Symfony\Component\Console\Application;
$app = new Application();
$app->run();
?>
Класс Application устанавливает необходимую функциональность консольного приложения.
Далее мы создадим класс HelloCommand, расширяющий класс Command в самом файле main.php.
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
class HelloCommand extends Command {
}
Приложение использует следующие четыре класса, доступные в компоненте Command.
Command — используется для создания новой команды
InputInterface — используется для установки пользовательского ввода
InputArgument — используется для получения пользовательских данных
OutputInterface — используется для печати вывода в консоль
После этого добавим в файл класс HelloCommand, содержащий функции Configure и Execute. Итоговый код приложения будет иметь следующий вид:
<?php
require DIR . '/vendor/autoload.php';
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
class HelloCommand extends Command {
protected function configure() {
$this
->setName('app:hello')
->setDescription('Sample command, hello')
->setHelp('This command is a sample command')
->addArgument('name', InputArgument::REQUIRED, 'name of the user');
}
protected function execute(InputInterface $input, OutputInterface $output) {
$name = $input->getArgument('name');
$output->writeln('Hello, ' . $name);
}
$app = new Application();
$app->add(new HelloCommand());
$app->run();
}
?>
Теперь выполним приложение с помощью следующей команды, и результатом будет Hello, Jon, как и ожидалось.
php main.php app:hello Jon
Заключение
В этой статье мы представили несколько небольших примеров работы с Symphony, хотя на самом деле функционал этого фреймворка намного шире и с его помощью можно выполнить много интересных задач.
Приглашаем вас на серию открытых уроков по Symfony Framework:
Инструменты кэширования в Symfony — 7 августа в 20:00
Изучим, как эффективно использовать механизмы кэширования для повышения производительности приложений на Symfony.Масштабируем консьюмеры в RabbitMQ правильно — 21 августа в 20:00
Рассмотрим подходы к правильному масштабированию консьюмеров RabbitMQ для обеспечения стабильности и высокой доступности.
Кроме того, приглашаем вас пройти вступительное тестирование, которое поможет оценить уровень ваших знаний и навыков.
Комментарии (4)
DjUmnik
04.08.2025 09:43Жалкая пародия на Spring. Забавно, что в статье написание названия фреймворка всё время меняется.
DashBerlin
04.08.2025 09:43Symphony
это уже ни в какие ворота не лезет
symfony 3.2.7
автор годом не ошибся, из каких уголков Интернекта он стащил статью?
Система на основе Model‑View‑Controller
серьезно, а прочитать докуметацию не вариант было?
дальше по тексту материал для версии 3.х.х, который канул в лета много лет назад
почему я за такую бездарность не могу карму снизить ( и чему такие могу научить?
ALapinskas
Хороший фреймворк. Но у нас почему-то больше популярен - Laravel, тоже PHP MVC.