Tworzenie aplikacji w środowisku Laravel jest wygodne i eleganckie. Framework oferuje wszystko, co może być przydatne przy tworzeniu własnych rozwiązań, a na co w czystym PHP tracilibyśmy sporo czasu. Cechy te doceniło już bardzo wielu programistów, wśród których wielu to migranci z Symphony.

Dobrą (wg mnie) i uniwersalną zasadą przy pisaniu własnych skryptów, jest:

Zanim zaczniesz wyważać drzwi sprawdź, czy ktoś już ich nie otworzył.

Jako, że grono korzystających z Laravel jest już liczne, ilość gotowych do wykorzystania pakietów jest naprawdę imponująca. Na stronach Packalyst i Packagist mamy dostęp do bibliotek, w których znajdziemy właściwe wszystko, co może być przydatne w pracy, a przy okazji ułatwić życie. Dzięki temu, że Laravel wykorzystuje Composer, bez problemu zainstlujemy wszystko, co tylko może nam się przydać (oczywiście uwzględniając wersję Laravel, z której korzystamy).

Na podstawie swoich dotychczasowych doświadczeń wybrałem kilka z nich, które z czystym sumieniem mogę polecić, i które jak na razie mnie nie zawiodły.

1. Laravel-permission

Wszystkie pakiety pochodzące od ekipy Spatie są najwyższej jakości, świetnie udokumentowane, systematycznie aktualizowane i, co nie jest bez znaczenia, autorzy są bardzo komunikatywni.

Jako pierwszy polecam pakiet pomagający w obsłudze użytkowników. Oferuje wszystkie usługi, których możemy w tym zakresie potrzebować - zapewnia obsługę rejestracj, edycji i uprawnień oraz wszystkich funkcji powiązanych. Dla stron, których zasoby mają być chronione w całości lub tylko w części, pakiet pozwala zaoszczędzić masę czasu.

Laravel w sowjej podstawowej instalacji oferuje własny system obsługi użytkownków, jednak ten pakiet bazując na nim, wybitnie rozszerza jego funkcjonalność. Zachowuje przy tym charakterystyczną dla Laravel czytelność i łatwość implementacji.

Pakiet dostarczany jest tylko z przykładowymi, prostymi szablonami formularzy, więc chcąc np. w sekcji administracyjnej udostępnić bardziej zaawansowane możliwości kontroli i edycji użytkowników, musimy taką funkcjonalność stworzyć samodzielnie, ale dzięki elastyczności pakietu nie jest to zbyt skomplikowane. Podobnie wygląda sprawa z powiązaniem profili użytkowników - pakiet tego nie oferuje, ale wykonanie tego we własnym zakresie nie jest żadnym problemem.

2. Laravel-medialibrary

Kolejny pakiet ze stajni Spatie pomaga w zarządzaniu plikami. Tworząc na stronie formularz obsługujący upload plików na serwer, możemy utworzyć odpowiednią funkcję kontorlera, która korzystając z api pakietu pozwoli na utrzymanie porządku w zasobach przy jednoczesnym uproszeczeniu całego procesu. Przy odpowiedniej konfiguracji pakiet zadba o automatyczne przetwarzanie przesyłnych plików graficznych, kadrując je do zadanych rozmiarów i umieszczając w odpowiednich katalogach.

U podstaw zastosowanej filozofii leży pojęcie tzw. kolekcji, które możemy powiązać z różnymi sekcjami naszego projektu, a każdej kolekcji możemy przypisać indywidualne cechy oraz miejsce przechowywania jej elementów. Kolekcje mogą być powiązane z dowolnym modelem zdefiniowanym w projekcie poprzez prostą deklarację w klasie modelu.

Projektując frontend zyskujemy wygodny i eleastyczny mechanizm odwołań do plików, np. bez konieczności odowływania się do fizycznych ścieżek. Wszystkie dane niezbędne do wykorzystania plików pobierane z są w postaci obiektów, których właściwości i funkcje zapewniają dostęp do każdej informacji.

3. Laravel-responsecache

System cache w Laravel jest bardzo elastyczny, pozwala na korzystanie z wielu mechanizmów od plików, przez bazę danych aż po memcached. I mimo, że jest prosty i niezawodny, to w niektórych sytuacjach może nie być wystarczający.

Ten pakiet rozszerza tę funkcjonalność o możliwość przechowywania w cache dowolnego obiektu będącego odpowidzią na żadania typu GET. Oczywiście możemy wykluczać z tego działania dowolne z żadań, np. te powiązane z obsługą formularzy lub użytkownikowników.

Przy poprawnej konfiguracji wszystko odbywa się "przezroczyście", bez konieczności stosowania bezpośrednich wywołań. Pamietać należy tylko o tym, aby po aktualizacji zasobu (nowy artykuł, aktualizacja treści itp.) usunąć z cache jego pierwotną wersję lub inny obiekt, który po takiej zmianie też wymaga aktualizacji. Służą do tego odopowiednie, proste funkcje, które należy wywołać w odpowiedniej metodzie kontrolera odpowiedzialnej za zapis lub aktualizację.

Korzyści wynikające z zastosowania tego pakietu są trudne do przecenienia. Przy rozbudowanych projektach, w których ilość zasobów i aktywność uzytkowników są duże, można zyskać nawet wielokrotne przyspieszenie operacji związanych z prezentacją.

Co dalej?

Te trzy wybrane przeze mnie pakiety to tylko promil tego, co jest dostępne dla Laravel. Sam korzystam jeszcze z wielu innych, a każdy bez problemu znajdzie takie, które mogą przyspieszyć tworzenie własnych projektów.

Tak na podsumowanie mogę polecić jeszcze:

  • Laravel-activitylog - rejestruje aktywność użytkowników, tworzenie, aktualizacje, usuwanie itp.,
  • Laravel-analytics - pobieranie z Google Analytics danych statystycznych, wymaga dostępu do Google API,
  • Laravelcollective - tworzenie i obsługa formularzy, wygodny sposób dynamicznego tworzenia formularzy frontend,
  • Glide-laravel - doskonała biblioteka przetwarzania plików graficznych, cache graficzny, konwersje "w locie",
  • Settings - elastyczny system przechowywania ustawień w bazie danych, życia nie ratuje, ale bardzo je ułatwia.

I mógłbym tak jeszcze długo, ale przecież nie o to chodzi. Zaproponowałem te pakiety dlatego, że mam je przećwiczone. W moich projektach spisują się w zasadzie bez zarzutów, każdy ma jakieś niedogodności, ale w żadnym stopniu nie uzaję ich za problematyczne. Dzięki bardzo dobrej integracji w środowisku Laravel każdy brak lub niedoskonałość można uzupełnić lub poprawić we własnym zakresie, ale są to sytuacje incydentalne. Dla większości zastosowań wystarcza poprawna konfiguracja i… czytanie dokumentacji - nieśmiertelne RTFM nic nie straciło na swojej aktualności.


blog comments powered by Disqus