Laravel
Laravel to framework, czyli szkielet programu, napisany w języku PHP. Został on wydany w 2011 roku i bardzo szybko stał się jednym z popularniejszych rozwiązań tego typu. Jest to oprogramowanie w pełni otwarte (licencja MIT), bazujące na popularnym wzorcu MVC (Model-View-Controller).
Mimo ogromnej popularności, dużo programistów uważa, że Laravel nie jest frameworkiem, któremu warto zaufać. A jak jest naprawdę? W Code Apps używamy naprzemiennie Laravela i Symfony, oba frameworki znamy bardzo dobrze. Postanowiłem więc spisać kilka najważniejszych zalet tego systemu i obalić kilka mitów.
Zapraszam!
Czym jest framework?
Zacznijmy od wyjaśnienia, czym jest w ogóle framework. Jest to szkielet do budowy aplikacji. Frameworki są różne od takich, które są po prostu zestawem bibliotek, które możemy użyć aż po takie, które narzucają nam sposób budowania projektów.
Większość aplikacji składa się z tych samych elementów. Na przykład praktycznie każda aplikacja webowa musi zawierać:
- Obsługę routeru
- Obsługę bazy danych
- Autoryzację użytkowników
- Bibliotekę do wysyłki e-maili
- itd.
Gdybyśmy przy każdym projekcie musieli to wszystko robić od nowa, tracilibyśmy bardzo dużo czasu. I tu z pomocą przychodzą nam frameworki. Dzięki nim, programista może skupić się na tworzeniu faktycznych funkcji aplikacji.
Oczywiście, są aplikacje, które wymagają dedykowanych rozwiązań. Ale jednak większość programów śmiało możemy zbudować na frameworku.
Model-View-Controller
Model-View-Controller, w skrócie MVC, to wzorzec architektoniczny, który pomaga programiście uporządkować strukturę aplikacji.
Wzorzec MVC składa się z 3 części:
- Model – Model to pewna definicja logiki aplikacji. Najczęstszą formą modelu w aplikacjach webowych jest to, co aplikacja otrzymuje z bazy danych.
- View – Ten element definiuje jak wygląda nasza aplikacja lub to, co ona zwraca.
- Controller – Główna logina aplikacji, która przyjmuje dane wyjściowe od użytkownika i reaguje na nie (przekazuje do modelu, widoku czy np. waliduje otrzymane dane).
Zalety frameworka PHP Laravel
Popularność
Obecnie Laravel naprzemiennie z Symfony jest najpopularniejszym frameworkiem w języku PHP. Dzięki czemu programiści mają dostęp do dużej społeczności i wiedzy. Dodatkowo, dużo firm szuka programistów znających ten framework.
Dokumentacja i laracast
Sami autorzy dbają o to, aby poznanie ich produktu było jak najprostsze. Laravel posiada bardzo rozbudowaną dokumentację oraz tutoriale w formie wideo.
Prostota
Moim zdaniem największą zaletą Laravel jest prostota i intuicyjność. Wielokrotnie programiści napotykając jakiś problem, nie muszą nawet zaglądać w dokumentację. Piszą tak jak im się „wydaje”, że powinno być i nagle okazuje się, że to działa. Dodatkowo osoby pracujące nad tym narzędziem zadbały o bardzo dużo różnych funkcji czy opcji, które bardzo ułatwiają pracę programistom. Przykładem jest funkcja back()
, która cofa nas do poprzedniej strony. Normalnie, musielibyśmy sami zapisać w sesji poprzednią stronę, odczytać z sesji i przekierować użytkownika. Laravel zrobi to wszystko za nas.
Autentykacja
Ogromna część aplikacji webowych zawiera możliwość założenia konta i zalogowania się do aplikacji przez użytkowników. Laravel posiada wbudowaną autentykację użytkowników, którą dodajemy do naszej aplikacji jedną komendą. Dzięki wbudowanej obsłudze rejestracji, logowania i uprawnień, programiści zyskują bardzo dużo czasu.
Eloquent
Laravel posiada wbudowany system do obsługi baz danych dzięki modelom, które piszemy jako część aplikacji. Fajne i proste w obsłudze rozwiązanie, które bardzo ułatwia tworzenie prostych zapytań.
Query builder
Dodatkowo, Laravel posiada tzw. Query Builder, który umożliwia nam budowanie nawet bardzo zaawansowanych zapytań, praktycznie bez znajomości bazy danych. Za pomocą odpowiednich metod, jesteśmy w stanie pobrać dane z bazy nie pisząc nawet kawałka zapytania SQL.
Artisan
Artisan to linia komend, która bardzo ułatwia pracę programistom. Zamiast robić wszystko ręcznie, wystarczy wpisać odpowiednią komendę i Laravel zrobi daną czynność za nas.
Blade
Szczerze mówiąc nie jestem fanem systemu szablonów Blade. Zdecydowanie wolę system Twig, który jest dostępny we frameworku Symfony. Jednak Blade posiada jedną funkcję, którą programiści bardzo chwalą. A mianowicie, Blade to tak naprawdę tylko nakładka na PHP. Dzięki temu, możemy w szablonach używać PHP, przez co Blade ma dużo większe możliwości. Jak wspomniałem, ja osobiście nie jestem fanem tego rozwiązania, ale warto o tym wspomnieć.
Migracje
Migracje to klasy, które definiują strukturę bazy danych. Super opcja, która pozwala nie tylko zachować porządek, ale też trzymać historię zmian w strukturze bazy danych, która zmienia się wraz z kolejnymi wersjami aplikacji.
Środowisko Laravela
Laravel to nie tylko framework, to cały ekosystem powiązanych z frameworkiem dodatków i programów. Obecnie w ekosystemie Laravela znajduje się 18 elementów, takim jak np.:
- Nova – Generator panelu administracyjnego do naszej aplikacji.
- Lumen – Microframework do malutkich aplikacji.
- Cashier – Moduł do płatności subskrypcyjnych.
- Dusk – Moduł do testów aplikacji.
- Passport – Implementacje OAuth2.
- Scout – Wyszukiwanie full-textowe w bazie danych.
- Socialite – Logowanie do aplikacji za pomocą kont z Facebook, Twitter, LinkedIn, Google, GitHub, GitLab and Bitbucket.
Niektóre z powyższych dodatków są płatne, jednak czas jaki zyskujemy jest często wart tych dodatkowych pieniędzy.
Laravel vs Symfony
Zarówno Laravel jak i Symfony są bardzo popularne, jednak różnią się dość znacząco. Laravel jest prostszy do nauczenia i dużo więcej rzeczy jest zautomatyzowanych. W Symfony musielibyśmy napisać dużo więcej kodu, aby uzyskać taki sam efekt jak w przypadku Laravela. Plusem Symfony na peno jest Doctrine i to, że Symfony nie wymusza na nas struktury aplikacji. Możemy zrobić po swojemy tylko korzystając z komponentów od Symfony.
Dyskusja na temat plusów i minusów obu rozwiązań to temat na osobny wpis, który napewno niedługo powstanie ?
A Ty, po której jesteś stronie? Używasz Laravela, czy wolisz inne rozwiązania?