Moc komponentów Symfony

Nie wiem, czy nazwę „Symfony” wymyśliła firma SensioLabs, twórcy tego popularnego frameworka, czy mieli kogoś dobrego od marketingu, ale lepszej naprawdę nie dało się wymyślić. Symfony to zbiór niezależnych bibliotek zwanych komponentami, które mogą być wykorzystywane oddzielnie lub tworzyć jedną całość i współgrać ze sobą.

Zestawienie pomocnych komponentów Symfony

Aby rozwinąć trochę moją myśl, każdy komponent może zostać przyrównany do instrumentu, który dobrze brzmi osobno, jak również w orkiestrze razem z innymi instrumentami. Podobnie jest z Symfony. W zależności od tego, co chcemy uzyskać, wykorzystujemy odpowiedni komponent, kilka lub nawet wszystkie.

Wybrane komponenty Symfony

Krótki opis najczęściej wykorzystywanych komponentów Symfony:

  • HttpFoundation – odpowiada za warstwę HTTP, zamienia zmienne globalne dotyczące request ($_GET, $_POST, $_SESSION) oraz funkcje dotyczące response (echo(), header()) na programowanie zorientowane obiektowo. Najważniejsze w tym komponencie są dwie klasy Request oraz Response, posiadające wszystkie niezbędne metody do zarządzania warstwą HTTP.
  • HttpKernel – w skrócie odpowiada za przeobrażenie request w response.
  • Asset – zarządza generowaniem adresów url dla stylów CSS, skryptów JavaScript oraz plików i obrazków.
  • Console – dla użytkowników Linuksa rzecz szczególnie pożądana. Ten komponent zapewnia potężną konsolę przyspieszającą pracę nad aplikacją. Dzięki niej możemy zautomatyzować dziesiątki zadań, które musimy wykonać podczas tworzenia projektów, np. generowanie klas wraz z setterami i getterami, generowanie struktury bazy danych.
  • DependencyInjection – wprowadza wzorzec, jak prawidłowo „wstrzykiwać” obiekty do innych obiektów, czyli odpowiada za zależności pomiędzy różnymi obiektami w naszej aplikacji.
  • EventDispatcher – umożliwia komunikację pomiędzy odrębnymi częściami naszej aplikacji. W jednym komponencie deklarujemy klasę Event umożliwiającą reakcję na daną akcję w aplikacji, a w kolejnym klasę EventSubscriber, w której zapisujemy się do wcześniej zadeklarowanego wydarzenia. Dobrym przykładem może być wcześniej wspomniany komponent HttpKernel, który dzięki EventDispatcher przeobraża request w response.
  • BrowserKit – symuluje zachowanie przeglądarki w naszej aplikacji, czyli umożliwia programistyczną obsługę klikania, zapisywania formularzy itp.
  • Process – umożliwia wykonywanie komend w podprocesach.
  • CssSelector – zamienia selektory css na wyrażenia Xpath.
  • Form – pozwala na tworzenie prostych i złożonych formularzy oraz na zarządzanie procesem ich wypełniania.

Przedstawiłem tylko kilka z naprawdę wielu komponentów Symfony, które mogą być używane w tworzeniu zaawansowanych aplikacji internetowych. Aby poznać wszystkie, zachęcam do odwiedzenia dokumentacji na oficjalnej stronie Symfony.

Zastosowanie Symfony

PHP mimo ofensywy ze strony JavaScript to nadal najczęściej wykorzystywana technologia w internecie. Obecnie w większości przypadków do tworzenia witryn, sklepów, czy przeróżnych aplikacji internetowych wykorzystywane są gotowe systemy CMS, e-commerce czy frameworki. W najpopularniejszych tego typu platformach możemy znaleźć oczywiście komponenty Symfony. Kilka przykładów:

Systemy e-commerce

  • Magento – potężna i niezwykle popularna platforma e-commerce. Używa komponentów Console, EventDispatcher, Process.
  • PrestaShop – równie popularna, co Magento platforma, która używa komponentów Asset, HttpFoundation, HttpKernel, EventDispatcher i wielu innych.
  • Sylius – używa komponentów Asset, EventDispatcher, Form, Security, Routing i innych.

Systemy CMS

  • Drupal 8 – wszechstronny CMF, który używa komponentów: HttpKernel, HttpFoundation, EventDispatcher, DependencyInjection i wielu innych.
  • Joomla! - jeden z najpopularniejszych systemów CMS używa komponentów Asset, Console, HttpFoundation, Yaml i wielu innych.
  • eZ Publish – używa komponentów BrowserKit, DependencyInjection, Config, Debug i innych.

Frameworki

  • Symfony – Symfony obrócz tego, że jest zbiorem komponentów jest również pełnoprawnym frameworkiem. Oczywistym jest, że korzysta z komponentów Symfony.
  • Laravel – najszybciej rozwijający się framework, najpopularniejszy i zdobywający rzesze nowych użytkowników. Korzysta z komponentów Console, Debug, HttpFoundation, HttpKernel i wielu innych
  • Yii – mniej popularny od Laravela, ale stanowiący jego mocną konkurencję. Korzysta z komponentu Process.

SDK

  • Google Cloud Platform – korzysta z komponentów Console, BrowserKit, Filesystem, Lock, Process.
  • Facebook Ads API – korzysta z komponentu Finder.
  • Facebook Instatnt Articles – korzysta z komponentu CssSelector.

Inne

  • Composer – narzędzie bez którego nie potrafi się dziś obejść prawie żaden programista PHP. Używa komponentów Console, Filesystem, Finder, Process.
  • PhpMyAdmin – narzędzie, którego nie muszę przedstawiać. Korzysta z komponentów ExpressionLanguage, Polyfill Mbstring.
  • Gry – spotkałem się nawet z takim zastosowaniem Symfony. Programiści jednej z firm zajmujących się tworzeniem gier chwalili się stosowaniem komponentów DependencyInjection czy Console.

Cechy charakterystyczne Symfony

Mógłbym tak pewnie wymieniać jeszcze przez kilka kolejnych stron A4. Z powyższych przykładów możemy zobaczyć jak szeroko stosowaną platformą jest Symfony. Niektóre komponenty takie, jak HttpFoundation czy Console są wykorzystywane w całej gamie systemów opartych na PHP. Można powiedzieć, że komponenty Symfony rozszerzyły możliwości tego języka programowania oraz ułatwiły i przyspieszyły pracę wielu programistom na całym świecie.

Drugim obok komponentów najbardziej cechującym elementem Symfony są tzw. „Bundles”, czyli niewielkie, niezależne aplikacje, które mogą być wykorzystywane przy tworzeniu dużych projektów. Dobrym przykładem Bundles będą funkcjonalności systemu logowania lub panelu administracyjnego, które w prawie każdym projekcie trzeba wdrożyć. Z Symfony wystarczy, że zrobimy je raz, a w kolejnych projektach wykorzystamy ponownie. Bundles są oczywiście tworzone również przez społeczność Symfony, a więc zanim zaczniemy pisać coś od nowa, warto przejrzeć czy ktoś już nie zrobił czegoś podobnego.

Symfony framework charakteryzuje również brak jasno określonej struktury modelu we wzorcu programowania obiektowego MVC. Warstwę modelu w Symfony najczęściej pełni Service Container, czyli serwisy, które deklarujemy w obrębie całej naszej aplikacji i do których możemy się w prosty sposób odwoływać z dowolnego miejsca w kodzie.

Podsumowanie

Symfony to obecnie najszerzej wykorzystywana platforma na bazie języka PHP. Znajomość komponentów Symfony otwiera szerokie możliwości poznania oraz rozszerzania systemów, które z nich korzystają. Programiści znający Symfony zapewne jeszcze przez długi czas będą poszukiwani na rynku pracy.

Myślisz o zastosowaniu Symfony w swoim projekcie?

Napisz do nas