Использование фреймворков позволяет существенно упростить процесс разработки веб ресурсов. Одним из наиболее мощных фреймворков является 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:

Кроме того, приглашаем вас пройти вступительное тестирование, которое поможет оценить уровень ваших знаний и навыков.

Комментарии (4)


  1. ALapinskas
    04.08.2025 09:43

    Хороший фреймворк. Но у нас почему-то больше популярен - Laravel, тоже PHP MVC.


  1. DjUmnik
    04.08.2025 09:43

    Жалкая пародия на Spring. Забавно, что в статье написание названия фреймворка всё время меняется.


  1. DashBerlin
    04.08.2025 09:43

    Symphony

    это уже ни в какие ворота не лезет

    symfony 3.2.7

    автор годом не ошибся, из каких уголков Интернекта он стащил статью?

    Система на основе Model‑View‑Controller

    серьезно, а прочитать докуметацию не вариант было?

    дальше по тексту материал для версии 3.х.х, который канул в лета много лет назад

    почему я за такую бездарность не могу карму снизить ( и чему такие могу научить?


  1. conout
    04.08.2025 09:43

    Это что, писала нейросеть, обученная на материалах 2017 года?