Techniki Pracy
8 godz. 33 min · Laravel · Full-stack i Programowanie
Piotr PalarzWeb DeveloperKurs ten rozpoczniemy od omówienia czym jest framework Laravel i co może Ci zaoferować. Następnie zobaczysz jak skonfigurować środowisko do pracy lokalnej w formie wirtualnej maszyny z preinstalowanymi narzędziami, tj. PHP, MySQL czy serwerem nginx. Zobaczysz w jaki sposób tworzyć nowe projekty wykorzystujące Laravel, zrozumiesz strukturę katalogów projektu i skonfigurujesz polaczenie z baza danych.
W kursie nie znajdziesz czysto teoretycznych lekcji. Każda z części przybliżać nas bowiem będzie do finalnej wersji projektu, którym będzie aplikacja internetowego bloga. Funkcjonalności, które od podstaw zaimplementujemy, to m.in. dodawanie i wyświetlanie wpisów, tworzenie i przypisywanie tagów, komentowanie, rejestracja i logowanie użytkowników czy wyszukiwarka. Każda z nich odkryje przez Toba możliwości frameworka Laravel i jego sposoby na rozwiazywanie konkretnych problemów.
Laravel to framework oparty o wzorzec MVC. Na konkretnych przykładach zobaczysz co to oznacza. Tworzyć będziemy wspólnie kontrolery, do których przypiszemy stosowne adresy URL, modele, które reprezentować będą dane, a także widoki, które te dane sformatują, wplatając je w kod HTML.
Choć aby w pełni zrozumieć omawiane zagadnienia, należy znać podstawowe koncepcje relacyjnych baz danych, to pisanie zapytań SQL nie jest czymś, to będziemy musieli robić. Wszystko to za sprawa migracji oraz Eloquenta. Te pierwsze pozwolą nam zaprojektować strukturę tabel bazy danych i jedna komenda je utworzyć, a Eloquent posłuży nam do tworzenia, zapisywania i odczytywania modeli reprezentujących te dane. Wszystko to uzyskamy pisząc wyłącznie prosty kod PHP.W kursie nie zabraknie również informacji na temat tworzenia relacji. Zobaczysz m. in. jak skojarzyć autora w wpisem, jak dodawać tagi czy komentarze.
Te dwa pojęcia, choć podobne, różnią się od siebie. Pierwsze pozwala określić, czy logujący się użytkownik jest tym, za kogo się podaje. Drugie mówi nam, czy dana osoba może wykonać zadana akcje. Oba te koncepty zobaczysz w akcji na praktycznym przykładzie. Do naszego bloga dodamy pełen system autentykacji, tj. rejestracje, logowanie, resetowanie hasła i potwierdzanie adresu email. Zalogowani użytkownicy otrzymają dzięki temu bonus w postaci niewidocznych dla pozostałych osób wpisów premium. Aby zarządzać wpisami na blogu, stworzymy mini sekcje administracyjna, do której dostęp będzie miał wyłącznie użytkownik oznaczony jako administrator. Dowiesz się wówczas nie tylko jak pokazywać pewne widoki wyłącznie zautoryzowanym osobom, ale także jak zabezpieczyć kontrolery przed nieuprawnionym dostępem.
Oprócz wymienionych wyżej tematów, w kursie poruszymy również uploadowanie plików na serwer, sposoby tworzenia i wysyłania maili, prace z Front-endem, debugowanie aplikacji, korzystanie z rozszerzeń tworzonych przez aktywna społeczność Laravel czy techniki wdrażania aplikacji do produkcji. Ostatni temat będzie o tyle ciekawy, ze jest on często pomijany w materiałach tego typu. Z tym kursem Twoja aplikacja nie pozostanie wyłącznie na dysku Twojego komputera. Dowiesz się bowiem jak skonfigurować serwer VPS tak, aby wykorzystać tzw. zero-downtime deployment. Dwie komendy wystarcza wówczas do tego, aby w kilkanaście sekund nowa wersja Twojej aplikacji ukazała się światu. A wszystko to bez przerywania jej działania nawet na ułamek sekundy i bez wykorzystania płatnych rozwiązań!
Kurs ten jest dla wszystkich tych, którzy znają już podstawy języka PHP i koncepcje relacyjnych baz danych SQL oraz chcieliby przyjemnie i wydajnie tworzyć ambitne aplikacje internetowe. Znajomość samego frameworka Laravel lub podobnych rozwiązań nie jest jednak wymagana. Praca z frameworkiem omawiana jest stopniowo, od podstaw do bardziej zaawansowanych tematów. Jeśli zatem masz głowę pełną pomysłów, a chcesz uniknąć frustracji związanej z pisaniem wszystkiego od podstaw - koniecznie sięgnij po Laravel i zobacz jak to narzędzie pozwoli skupić Ci się na tym, co istotne!
5.8.x
Jeżeli sięgasz kurs laravel to prawdopodobnie wiesz czym jest to narzędzie. Niemniej
jednak, tak czy siak, chciałbym to króciutko wyjaśnić. Laravel
jest framework'iem PHP i stylem życia. Dlaczego? O tym
możesz się przekonać dopiero kiedy zaczniesz programować z użyciem tego framework'a, jest
to naprawdę proste, przyjemne, intuicyjne i zawsze kiedy czegoś ci brakuje,
wystarczy wyszukać. Okazuje się, że albo ten framework już to oferuje albo
możesz daną funkcjonalność łatwo zaimplementować z użyciem dodatków. Dzięki
temu możemy skupić się na pisaniu ambitnych, dobrych, nowoczesnych aplikacji webowych, a
nie na tym jak na przykład ustawić ciasteczko w języku PHP. Co
zatem oferuje nam framework taki jak laravel? Przede wszystkim jest
to struktura MVC i routing. MVC oznacza Model View Controller i
tutaj ściśle za tą strukturą podążamy, oznacza to że mamy model który reprezentuje
jakieś dane na przykład wpis na blogu. Mamy widok czyli V jak View. To
reprezentuje jego wygląd czyli kod html. Mamy controller. To
kolei jest część logiki, która odpowiada za pobranie na przykład wszystkich wpisów z bazy danych
i przekazanie ich do widoku, który je wyświetli. Routing natomiast pozwala
nam przepisać odpowiedni adresu URL do takiej operacji. Kolejna
rzecz to ORM, czyli Object Relational Mapping. To pozwala
nam opakować bazę danych w taki sposób, że korzystając laravel'a prawie
nigdy musimy pisać SQL'owych zapytań do bazy danych. Oczywiście znajomość
samego SQL'a jest tutaj przydatna, aby rozumieć na przykład relacje.
Niemniej nie musimy pisać zapytań SQL'owych. Wszystko zrobimy za pomocą
specjalnych obiektów, które framework nam udostępnia. Łatwa
praca z ciasteczkami sesjami czy pamięcią podręczną. Laravel jest framework'iem
napisanym w języku PHP, ale framework od języka różni się właśnie
tym, że mamy tutaj dosyć wysoki poziom abstrakcji a więc język PHP oferuje
nam funkcje do ustawienia ciasteczek, ale po co z niej korzystać za każdym razem kiedy
chcemy zrobić coś takiego jeżeli możemy skorzystać już z dużą prostszego
interfejsu który gdzieś pod spodem oczywiście tej funkcji używa. Dzięki
temu jeżeli chcemy ustawić ciasteczko takie które będzie w nieskończoność w przeglądarce
możemy skorzystać z Cookie Forever i sprawa jest załatwiona. Podobnie będzie z
sesjami czy pamięcią podręczną i co ciekawe tutaj warstwa abstrakcji jest
na tyle duża że mamy wspólny interfejs do pracy na przykład pamięcią podręczną.
A gdzie ona tak naprawdę będzie przechowywana to już zależy od sterowników które
bardzo prosty sposób można skonfigurować. Kolejna
rzecz to mechanizmy walidacji danych. Jeżeli na przykład wyślemy formularz do
naszego kontrolera to będziemy mogli z użyciem laravel'a bardzo łatwo zwalidować
te dane mówiąc na przykład że pole nazwie email ma być rzeczywiście poprawnym
adresem email a powiedzmy inne pole ma mieć wartość numeryczną. Z kolei
treść wiadomości powiedzmy powinna mieć minimum trzy znaki. Wszystko to zrobimy za pomocą
kilku linijek kodu. Autentykacja to z kolei
będzie mechanizm który pozwoli nam utworzyć rejestrację, logowanie czy odzyskiwanie
hasła. Z użyciem laravel'a będzie to naprawdę proste o czym przekonasz się w tym kursie. Autoryzacja
to kolei tworzenie reguł dostępu do zasobów i akcji czyli kiedy użytkownik jest
już zalogowany, możemy sprawdzić czy na przykład ma możliwość edytowania wpisów.
Jeżeli tak, pozwolimy mu wykonać jakąś akcję. Jeżeli nie zabronimy
takiej akcji i możemy w ogóle nie wyświetlić mu również formularza do edycji. Wszystkie
te rzeczy oczywiście można napisać samemu, tylko po co jeżeli mamy je we framework'u
i ułożone są one w taki sposób, że bardzo łatwo je definiować, a następnie
z nich korzystać. Z wysyłaniem maili to również bardzo ważna
część każdej aplikacji webowej i w laravarze jest to uproszczone do minimum. Bardzo
łatwo możemy tworzyć tak zwane Mailables, które pozwalają być wysłane
za pomocą emaila i tutaj znowu mamy wysoką warstwę abstrakcji, czyli jeden
spójny interfejs, z którego można korzystać, a pod spodem możemy definiować
różne sterowniki. Zatem maile możemy wysłać za pomocą protokołu smtp. Ale
równie dobrze możemy skonfigurować na przykład simple email service od Amazona, a
nasz kod pozostanie bez zmian. To będzie tylko kwestia ustawień. Kolejna
ważna rzecz to praca z plikami na przykład wgrywanie i przechowywanie plików na
wielu dyskach. Co oznacza na wielu dyskach? Po raz kolejny mamy tutaj wysoką warstwę
abstrakcji, czyli jeżeli raz napiszemy kod, który przyjmuje z formularza
na przykład obrazek. Później ten obrazek wyświetla przy wpisie, to możemy nie
zmieniając tego kodu definiując odpowiednie sterowniki ustawić, że ten
obrazek ma być przechowywany u nas lokalnie na serwerze lub na przykład na Dropbox'ie
albo w chmurze Amazon S3 i jedna z
najważniejszych rzeczy jeżeli chodzi wszystkie framework'i i laravel nie jest tutaj wyjątkiem. Jest
to ekosystem rozszerzeń czyli aktywna społeczność programistów. Jeżeli jest
czego nie oferuje laravel od razu po zainstalowaniu tego frameworka
to znaczy że można to napisać samemu a skoro
można to dopisać samemu to prawdopodobnie ktoś już to zrobił. Dzięki temu możesz
wyszukać rozszerzeń niemal do wszystkich operacji jakie chciałbyś wykonać do
wszystkich funkcji jakie chcesz zaimplementować na swojej stronie i dzięki temu że laravel
to jest w pewien sposób styl życia czyli wszystko
ma proste, przejrzyste i ma się z tego łatwo korzystać, to również rozszerzenia
które są tworzone dlatego framework'a podążają za taką ideą i zawsze są naprawdę
łatwe w skonfigurowaniu i proste w użyciu. I na
koniec czym różni się framework od CMS'a. Jeżeli korzystałeś
kiedyś na przykład z Wordpress'a, jest to Content Management System czyli system
zarządzania treścią, nie jest to to samo co framework. Po
pierwsze CMS daje nam panel administracyjny, gdzie możemy
zarządzać bez jakiejkolwiek znajomości programowania. Taki panel jest napisany
HTML CSS JavaScript i w naszym przypadku mógłby być napisane
w PHP tak jak jest to Wordpress'ie. Jeżeli chodzi o framework, framework nie
udostępnia żadnego panelu administracyjnego i nie udostępnia w zasadzie żadnego
gotowego kodu HTML. Wszystko musimy zrobić sami więc możemy napisać sobie
panel administracyjny. Jeżeli go potrzebujemy lub możemy napisać tylko część
frontend'ową, aby nasza aplikacja działała a nie musimy do niej mieć zarządzania. Możemy
zarządzać z wiersza poleceń. Możemy edytować bazy danych. To zależy
od konkretnej aplikacji. CMS ma również zdefiniowane
pewne zasoby takie na przykład wpis, strona, komentarz, tag czy użytkownik. Jeżeli
chodzi o framework, takich zasobów nie ma. To ty decydujesz jakie modele utworzysz,
to ty decydujesz że na przykład potrzebujesz model tag i że powinien on mieć swoją
nazwę albo na przykład że potrzebujesz model komentarza gdzie będzie data,
treść tego komentarza i przypisanie do relacji na przykład użytkownika,
który będzie autorem takiego komentarza. Zatem CMS już pewne zasoby zdefiniowane
masz z góry, framework nie ma żadnych zasobów i to my robimy wszystko od
podstaw. Kolejna rzecz w CMS'ach to są szablony, gdzie
możemy za pomocą kilku kliknięć zmienić całkowicie wygląd naszej strony internetowej. Jeżeli
chodzi framework znowu framework czegoś takiego nie oferuje. To tylko
kilka z różnic pomiędzy CMS'em a framework'iem. Natomiast możesz o frameworku
myśleć bardziej jako języku programowania, ale takim który definiuje dużo
więcej niż na przykład sam język PHP. Nie zmienia to jednak faktu, że
całą logikę naszej aplikacji musimy napisać sami, ale nie musimy się skupiać
takich drobnych rzeczach jak wspomniane ustawienie ciasteczek czy
na przykład zarządzanie sesjami. To framework oferuje nam za pomocą odpowiednich
metod i jest to dobrze przetestowane, dobrze napisane i
możemy bezpiecznie z tego korzystać. Dzięki temu skupiamy się wyłącznie
na pisaniu logiki biznesowej naszej aplikacji. Niemniej jednak
jak wspomniałem, nie mamy tutaj do dyspozycji gotowych rozwiązań takich
jak w systemie CMS. To wciąż my jesteśmy programistami, którzy muszą
utworzyć taką aplikację. To zatem tyle tytułem wstępu. Kiedy poznasz
ten framework tym kursie, na pewno to wszystko będzie dużo bardziej jasne.