Moc komponentów Symfony

Data dodania:

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

Aby rozwinąć trochę moją myśl każdy kompenent 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 jaavascript 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 EventDispatcger 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 zaawansowaych aplikacji internetowych. Aby poznać wszystkie, zachęcam do odwiedzenia dokumentacji na oficjalnej stronie Symfony.

Symfony – Najszersze spektrum możliwości

PHP mimo ofensywy ze strony JavaScript to obecnie 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 używa komponentów Asset, HttpFoundation, HttpKernel, EventDispatcher i wielu innych
  • Sylius – używa komponentów Asset, EventDispatcher, Form, Security, Routing i wielu innych

Systemy CMS:

  • Drupal 8 – Wszechstronny CMF 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 wielu 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 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.

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.