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
Oprócz wspomnianych wcześniej metod do debugowania, mamy jeszcze jeden
bardzo fajny dodatek jest to laravel debugbar i teraz ci pokażę
go zainstalować. Instalujemy go za pomocą composer'a, ale z taką flaga dev, to
oznacza, że on wpadnie do zależności development'ckich, czyli w produkcji kiedy
będziemy coś instalować czy wszystkie zależności, to nie będziemy musieli instalować
tych development'ckich, bo one są niepotrzebne, więc wpisujemy takie
polecenie i magbar debugbar nam się zainstaluje i co ważne nie musimy go ogóle
konfigurować, on od będzie działał, aczkolwiek ma pewne opcję konfiguracyjne,
o których możesz poczytać na stronie w github'ie. Okej,
zainstalował się i teraz jeżeli przejdziemy na stronę i po prostu od odświeżę, to pojawi
nam taki oto pasek tutaj. Możemy go rozwinąć
i teraz zobacz, mamy tutaj różne metryki
można tak powiedzieć, różne zakładki i różne rzeczy możemy tutaj zobaczyć. Polecam ci sobie to
przeklikać, mamy tutaj ważną, która nazywa się request, tutaj
pokazuje nam wszystkie dane na temat tego zapytania, czyli mamy status code na
przykład 200. Możemy zobaczyć jakie nagłówki zostały tutaj przysłane i
tak dalej, widzimy na przykład tym miejscu ile pamięci służyło to
zapytanie, ile trwało i jest tutaj naprawdę sporo ciekawych informacji,
które czasami mogą się przydać. Natomiast jedną z ciekawszych według mnie jest queries i
tutaj widzimy, jakie zapytania SQL zostały wykonane, żeby ta strona się
wczytała. Widzimy, że jest 8 tych zapytań i powiem ci
że część z możemy sobie troszeczkę zoptymalizować na przykład zauważ, że
pobieramy wszystkie wpisy tutaj
premium oraz published. To jest zależne naszego queryscope,
ale później pobieramy również tagi i z czego to wynika. To wynika
z tego, że jeżeli przejdziemy do PostController, to pobieramy
tutaj wszystkie wpisy i wstrzykujemy je do widoku. Natomiast w widoku posts
zajmujemy się również tagami i
jest to właśnie tutaj i laravel stosuje tutaj lazy loading, oznacza
to tylko tyle, że relacja tagów nie będzie
w ogóle wczytywana do momentu, aż nie skorzystamy tutaj z tags, więc lady
loading ma sens jeżeli nie wiemy czy będziemy korzystać z tych targów czy nie, bo może
to być tutaj robione warunkowo. Natomiast jeżeli góry wiemy że chcemy wczytać
wszystkie relacje to można zrobić rzecz następującą nie pokazywałem ci wcześniej, ale
pokażę ci teraz. W momencie kiedy pobieramy sobie wszystkie wpisy
możemy dopisać tutaj with i napisać tags,
to się oczywiście odwołuję do nas relacji, która jest zdefiniowana na post. Mamy
tutaj coś takiego jak tags i jest to relacja belongs to many. Jeżeli
coś takiego zrobimy to mówimy, że od razu już w tym jednym zapytaniu pobierz wszystkie
tagi, bo na pewno będziemy z nich korzystać w taki sposób i teraz jeżeli tutaj
odświeżymy to zauważ, że mamy tylko 6 zapytań a było wcześniej
8, a więc już troszeczkę zoptymalizowaliśmy sobie naszą aplikację. Tutaj
konkretnie widać to zapytanie, ona się po prostu zmieniło, teraz jest taki
który więcej danych wyciąga jednocześnie. Co ważne tutaj wszędzie możesz
zobaczyć, w którym miejscu tak zaczęło się wykonywać takie
query, czyli gdzie zostało zainicjowane. Na przykład tutaj w widoku posts w linijce
38, tutaj widzimy, że w kontrolerze, więc możemy jeszcze troszeczkę
tutaj zmodyfikować, jeżeli wiemy do wpisów
również będziemy wykorzystywać autora, a robimy to tutaj i stąd
prawdopodobnie są te zapytania do users, czyli one
są powtórzone to możemy od razu w PostController, jak mówiliśmy with tags,
to możemy jeszcze tutaj dodać raz with albo tutaj
to można podać jako tablice i oprócz tags podamy również
author with tags i author. Sprawdźmy i teraz
mamy tylko 4 zapytania, wcześniej było tych zapytań 8, później 6
i zauważ, że cały czas ten author się wyświetla. Jest wszystko okej, na
koniec jeszcze taka informacja, że jeżeli potrzebowałbyś bardziej zaawansowanego debugowania,
to zerknij do tej dokumentacji, bo tutaj, jak widzisz są
jeszcze dodatkowe opcje czy funkcje z których warto czasami skorzystać, aczkolwiek
w takich zwyczajnych prostych projektach prawdopodobnie nie będziesz musiał sięgać
bo aż tak zaawansowane funkcje.