
Laravel w działaniu. Budowa nowoczesnych aplikacji w PHP



Laravel w działaniu. Budowa nowoczesnych aplikacji w PHP - Najlepsze oferty
Laravel w działaniu. Budowa nowoczesnych aplikacji w PHP - Opis
Framework Laravel cieszy się rosnącą popularnością wśród programistów aplikacji w języku PHP. Jest szybki, potężny i elastyczny, można się go błyskawicznie nauczyć, a generowany przez niego kod cechują przejrzystość i czytelność. Co więcej, Laravel skupia wokół siebie zaangażowaną społeczność, która z jednej strony systematycznie tworzy nowe narzędzia i pakiety wzbogacające ten framework, z drugiej - chętnie śpieszy z pomocą w rozwiązywaniu problemów. Jest to więc świetny, dynamicznie rozwijający się zestaw narzędzi, który spodoba się każdemu profesjonalnemu programiście PHP, ceniącemu efektywność i wysoką jakość tworzonego kodu.Ta książka stanowi praktyczne i kompletne wprowadzenie do Laravela (zawiera informacje dotyczące Laravela 5.8). Dzięki niej osoby dysponujące pewnym doświadczeniem w tworzeniu kodu PHP błyskawicznie rozpoczną tworzenie znakomitych aplikacji. Znalazły się tutaj zarówno ogólne informacje na temat korzystania z tego frameworka, jak i przykłady szczegółowych zastosowań. Omówiono także mnóstwo narzędzi i bibliotek wzbogacających funkcjonalność Laravela: Dusk, Horizon, Artisan, Mix czy Passport. Opisano też interfejsy pozwalające na dostęp do systemu plików, sesji, ciasteczek, pamięci podręcznej i wyszukiwania oraz narzędzia do korzystania z kolejek, implementacji zadań, zdarzeń i publikowania zdarzeń WebSocket.
W książce między innymi:
tworzenie szablonów w Blade
generowanie, walidacja, normalizacja oraz filtrowanie danych użytkownika
praca z bazami danych za pomocą Eloquent
testowanie kodu PHP: PHPUnit, Mockery (...) więcej oraz Dusk
tworzenie API typu RESTful
inne narzędzia i biblioteki Laravela
Laravel: framework godny profesjonalisty!
Spis treści:
Wstęp 17
1. Dlaczego Laravel? 23
Po co używać frameworku? 23
"Zrobię to po swojemu" 24
Konsekwencja i elastyczność 24
Krótka historia WWW i frameworków PHP 24
Ruby on Rails 25
Zalew frameworków PHP 25
Dobre i złe strony CodeIgnitera 25
Laravel 1, 2 i 3 26
Laravel 4 26
Laravel 5 26
Co jest tak wyjątkowe w Laravelu? 27
Filozofia Laravela 27
Jak Laravel zapewnia programistom szczęście? 28
Społeczność użytkowników Laravela 29
Jak działa Laravel? 29
Dlaczego Laravel? 31
2. Konfiguracja środowiska roboczego do korzystania z Laravela 33
Wymagania systemowe 33
Composer 34
Lokalne środowisko programistyczne 34
Laravel Valet 34
Laravel Homestead 35
Tworzenie nowego projektu Laravela 36
Instalowanie Laravela przy użyciu narzędzia instalacyjnego 36
Instalowanie Laravela przy użyciu opcji create-project Composera 36
Lambo: polecenie "laravel new" o supermocach 36
Struktura katalogów Laravela 37
Katalogi 38
Pliki 39
Konfiguracja 40
Plik .env 41
Wszystko gotowe 43
Testowanie 43
TL;DR 44
3. Trasowanie i kontrolery 45
Szybkie wprowadzenie do MVC, czasowników HTTP oraz architektury REST 45
Czym jest MVC? 45
Czasowniki HTTP 46
Czym jest REST? 47
Definiowanie tras 48
Czasowniki tras 50
Obsługa tras 50
Parametry tras 51
Nazwy tras 52
Grupy tras 54
Oprogramowanie pośrednie 55
Prefiksy ścieżek 57
Trasy awaryjne 58
Trasy do poddomen 58
Prefiksy przestrzeni nazw 59
Prefiksy nazw 59
Trasy podpisane 59
Podpisywanie trasy 60
Modyfikacja tras w celu umożliwienia ich podpisywania 61
Widoki 61
Bezpośrednie zwracanie prostych tras przy użyciu Route::view() 62
Stosowanie twórców widoków w celu udostępniania danych we wszystkich widokach 63
Kontrolery 63
Pobieranie danych wejściowych od użytkowników 66
Wstrzykiwanie zależności do kontrolerów 67
Kontrolery zasobów 68
Kontrolery zasobów API 69
Kontrolery jednej akcji 70
Wiązanie tras i modelu 70
Niejawne wiązanie tras i modelu 71
Niestandardowe wiązanie trasy i modelu 71
Przechowywanie tras w pamięci podręcznej 72
Oszukiwanie metod obsługi formularzy 73
Czasowniki HTTP w Laravelu 73
Oszukiwanie metody HTTP w formularzach HTML 73
Zabezpieczanie przed atakami CSRF 74
Przekierowania 75
Metoda redirect()-to() 76
Metoda redirect()-route() 76
Metoda redirect()-back() 77
Inne metody przekierowań 77
Metoda redirect()-with() 78
Przerywanie przekierowania 79
Niestandardowe odpowiedzi 80
Metoda response()-make() 80
Metody response()-json() oraz -jsonp() 80
Metody response()-download(), -streamDownload() oraz -file 80
Testowanie 81
TL;DR 82
4. Szablony Blade 83
Wyświetlanie danych 84
Struktury sterujące 85
Konstrukcje warunkowe 85
Pętle 86
Dziedziczenie szablonów 88
Definiowanie sekcji przy użyciu @section/@show oraz @yield 88
Dołączanie fragmentów widoków 90
Stosowanie stosów 92
Stosowanie komponentów i gniazd 93
Twórcy widoków i wstrzykiwanie usług 95
Wiązanie danych z widokami przy użyciu twórców 96
Wstrzykiwanie usług w szablonach Blade 98
Dyrektywy niestandardowe 99
Parametry w niestandardowych dyrektywach 100
Przykład: Stosowanie niestandardowych dyrektyw w aplikacji wielodostępnej 101
Łatwiejsze niestandardowe dyrektywy reprezentujące instrukcje "if" 102
Testowanie 102
TL;DR 103
5. Bazy danych i Eloquent 105
Konfiguracja 105
Połączenia z bazami danych 106
Opcje konfiguracji baz danych 107
Definiowanie migracji 108
Wykonywanie migracji 115
Wypełnianie tabel danymi 116
Tworzenie klasy wypełniającej 116
Fabryki modeli 117
Budowniczy zapytań 122
Podstawowe sposoby użycia fasady DB 122
Wykonywanie kodu SQL 123
Sekwencje zapytań tworzone przy użyciu budowniczego 124
Transakcje 132
Wprowadzenie do mechanizmu Eloquent 134
Tworzenie i definiowanie modeli mechanizmu Eloquent 135
Pobieranie danych w modelach Eloquent 136
Wstawianie danych i ich aktualizacja w mechanizmie Eloquent 138
Usuwanie rekordów przy użyciu mechanizmu Eloquent 142
Zasięgi 144
Dostosowywanie interakcji z polami przy użyciu akcesorów, mutatorów i rzutowania atrybutów 147
Kolekcje mechanizmu Eloquent 150
Serializacja w mechanizmie Eloquent 153
Związki w mechanizmie Eloquent 155
Rekordy podrzędne aktualizujące znaczniki czasu rekordów nadrzędnych 166
Zdarzenia mechanizmu Eloquent 168
Testowanie 170
TL;DR 171
6. Komponenty frontendowe 173
System budowania Mix 173
Struktura katalogów systemu Mix 175
Uruchamianie systemu Mix 175
Co nam daje Mix? 176
Predefiniowane ustawienia frontendowe i generowanie kodu uwierzytelniającego 182
Predefiniowane ustawienia frontendowe 183
Generowanie kodu uwierzytelniającego 184
Podział na strony 184
Podział na strony wyników pobieranych z baz danych 184
Ręczna obsługa podziału na strony 185
Pojemniki komunikatów 186
Nazwane pojemniki komunikatów 188
Funkcje pomocnicze do obsługi łańcuchów, tworzenia liczb mnogich i lokalizowania 188
Funkcje pomocnicze do obsługi łańcuchów i tworzenia liczb mnogich 188
Lokalizowanie 189
Testowanie 193
Testowanie pojemników komunikatów i błędów 193
Tłumaczenie i lokalizowanie 193
TL;DR 193
7. Gromadzenie i obsługa danych od użytkowników 195
Wstrzykiwanie obiektu Request 195
Metoda $request-all() 196
Metody $request-except() oraz $request-only() 196
Metoda $request-has() 197
Metoda $request-input() 197
Metody $request-method() oraz $request-isMethod() 198
Dane wejściowe w formie tablicy 198
Dane wejściowe w formacie JSON (i metoda $request-json()) 198
Dane tras 200
Obiekt Request 200
Dane z parametrów trasy 200
Pliki przesyłane na serwer 200
Walidacja 203
Wywoływanie validate() na rzecz obiektu Request 203
Ręczna walidacja 205
Obiekty reguł niestandardowych 206
Wyświetlanie komunikatów o błędach walidacji 206
Żądania formularzy 207
Tworzenie żądań formularzy 207
Korzystanie z żądań formularzy 208
Masowe przypisania w obiektach mechanizmu Eloquent 209
{{ a {!! 210
Testowanie 211
TL;DR 212
8. Artisan i Tinker 213
Prezentacja Artisana 213
Podstawowe polecenia Artisana 214
Opcje 215
Grupy poleceń 215
Pisanie niestandardowych poleceń Artisan 218
Przykładowe polecenie 220
Argumenty i opcje 221
Korzystanie z danych wejściowych 222
Wyświetlanie komunikatów z prośbą o podanie danych 224
Wyświetlanie wyników 225
Polecenia implementowane przy użyciu domknięć 226
Wywoływanie poleceń Artisana w normalnym kodzie 227
Tinker 228
Serwer zrzutów Laravela 228
Testowanie 229
TL;DR 230
9. Uwierzytelnianie i autoryzacja użytkowników 231
Model User i jego migracja 232
Stosowanie globalnej funkcji pomocniczej auth() i fasady Auth 235
Kontrolery związane z uwierzytelnianiem 235
Kontroler RegisterController 236
Kontroler LoginController 237
Kontroler ResetPasswordController 238
Kontroler ForgotPasswordController 239
Kontroler VerificationController 239
Metoda Auth::routes() 239
Generowany kod obsługujący uwierzytelnianie 240
"Zapamiętaj mnie" 241
Ręczne uwierzytelnianie użytkowników 242
Ręczne wylogowywanie użytkownika 243
Unieważnianie sesji na innych urządzeniach 243
Oprogramowanie pośrednie związane z uwierzytelnianiem 243
Weryfikacja adresu e-mail 244
Dyrektywy mechanizmu Blade związane z uwierzytelnianiem 245
Strażniki 246
Zmiana domyślnego strażnika 246
Stosowanie innych strażników bez zmieniania domyślnego 247
Dodawanie nowych strażników 247
Strażniki żądań obsługiwanych przy użyciu domknięć 247
Tworzenie niestandardowego dostawcy użytkowników 248
Niestandardowi dostawcy użytkowników dla nierelacyjnych baz danych 248
Zdarzenia związane z uwierzytelnianiem 249
Autoryzacja (ACL) i role 250
Definiowanie reguł autoryzacji 250
Fasada Gate (lub wstrzykiwanie obiektu Gate) 251
Kontrola dostępu do zasobów 252
Oprogramowanie pośrednie służące do autoryzacji 252
Autoryzacja w kontrolerach 253
Sprawdzanie instancji klasy User 254
Testy w szablonach Blade 255
Przechwytywanie testów 255
Polityki 256
Testowanie 258
TL;DR 260
10. Żądania, odpowiedzi i oprogramowanie pośrednie 263
Cykl życia żądania w Laravelu 263
Ładowanie aplikacji 264
Dostawcy usług 265
Obiekt Request 266
Pobieranie obiektu Request w Laravelu 267
Pobieranie podstawowych informacji na temat żądania 268
Obiekt Response 272
Tworzenie i stosowanie obiektu Response w kontrolerach 272
Wyspecjalizowane typy odpowiedzi 273
Laravel i oprogramowanie pośrednie 278
Wprowadzenie do oprogramowania pośredniego 278
Tworzenie niestandardowego oprogramowania pośredniego 279
Wiązanie oprogramowania pośredniego 281
Przekazywanie parametrów do oprogramowania pośredniego 284
Zaufane serwery pośredniczące 285
Testowanie 286
TL;DR 287
11. Kontener 289
Krótkie wprowadzenie do wstrzykiwania zależności 289
Wstrzykiwanie zależności w Laravelu 291
Globalna funkcja pomocnicza app() 291
W jaki sposób kontener określa zależności? 292
Dodawanie klas do kontenera 293
Określanie zależności z wykorzystaniem domknięć 293
Stosowanie singletonów, nazw zastępczych i instancji 294
Wiązanie konkretnej instancji z interfejsem 295
Wiązanie kontekstowe 296
Wstrzykiwanie do konstruktora w plikach Laravela 296
Wstrzykiwanie do metod 297
Fasady a kontener 298
Jak działają fasady? 299
Fasady czasu rzeczywistego 300
Dostawcy usług 301
Testowanie 301
TL;DR 302
12. Testowanie 303
Podstawy testowania 303
Nazewnictwo testów 308
Testowanie środowiska 308
Cechy używane podczas testowania 309
RefreshDatabase 309
WithoutMiddleware 310
DatabaseMigrations 310
DatabaseTransactions 310
Proste testy jednostkowe 310
Testy aplikacji - jak działają? 311
Klasa TestCase 311
Testy HTTP 312
Proste testy stron przy użyciu $this-get() oraz innych wywołań HTTP 312
Testowanie API przy użyciu $this-getJson() i innych wywołań HTTP zwracających dane JSON 313
Stosowanie asercji z obiektem $response 314
Uwierzytelnianie odpowiedzi 315
Kilka innych modyfikacji testów żądań HTTP 316
Obsługa wyjątków w testach aplikacji 317
Testy baz danych 317
Stosowanie fabryk modeli w testach 318
Wypełnianie tabel danymi w testach 318
Testowanie innych systemów Laravela 318
Imitacje zdarzeń 319
Imitacje magistrali i kolejki 320
Imitacje poczty elektronicznej 321
Imitacje powiadomień 322
Imitacje magazynów 323
Stosowanie atrap 323
Krótkie wprowadzenie do stosowania atrap 324
Krótkie wprowadzenie do Mockery 324
Imitowanie innych fasad 326
Testowanie komend Artisana 327
Sprawdzanie składni poleceń Artisana 328
Testy w przeglądarce 329
Wybór odpowiedniego narzędzia 329
Testowanie przy użyciu narzędzia Dusk 330
TL;DR 340
13. Tworzenie API 341
Podstawy tworzenia API typu REST-like dla zasobów JSON 341
Organizacja kontrolera i zwracanie danych w formacie JSON 342
Odczyt i wysyłanie nagłówków 346
Wysyłanie nagłówków odpowiedzi w Laravelu 347
Odczytywanie nagłówków żądania w Laravelu 347
Dzielenie wyników modeli Eloquent na strony 347
Sortowanie i filtrowanie 348
Sortowanie wyników zwracanych przez API 349
Filtrowanie wyników zwracanych przez API 350
Przekształcanie wyników 351
Pisanie własnych przekształceń 352
Obsługa zagnieżdżania i związków przy użyciu niestandardowych przekształceń 353
Zasoby API 355
Tworzenie klasy zasobu 355
Kolekcje zasobów 356
Zagnieżdżanie powiązanych zasobów 358
Stosowanie podziału na strony z zasobami API 358
Warunkowe stosowanie atrybutów 359
Dodatkowe możliwości dostosowywania zasobów API 360
Uwierzytelnianie API przy użyciu Laravel Passport 360
Krótkie wprowadzenie do OAuth 2.0 360
Instalowanie Passporta 361
API Passporta 362
Różne typy przyznań 363
Zarządzanie klientami i żetonami przy użyciu API Passporta oraz komponenty Vue 371
Zasięgi 373
Wdrażanie Passportu 375
Uwierzytelnianie przy użyciu żetonu API 375
Dostosowywanie odpowiedzi 404 376
Wyzwalanie trasy awaryjnej 377
Testowanie 377
Testowanie Passporta 378
TL;DR 378
14. Przechowywanie i pobieranie 379
Magazyny plików - lokalne oraz w chmurze 379
Konfiguracja dostępu do plików 379
Stosowanie fasady Storage 380
Dodawanie innych dostawców systemów plików 382
Podstawowe sposoby przesyłania plików na serwer i operacji na nich 382
Proste sposoby pobierania plików 384
Sesje 384
Dostęp do sesji 384
Dostępne metody instancji sesji 385
Mechanizm składowania "flash" sesji 387
Pamięć podręczna 387
Dostęp do pamięci podręcznej 388
Dostępne metody instancji pamięci podręcznej 388
Ciasteczka 390
Ciasteczka w Laravelu 390
Dostęp do narzędzi obsługi ciasteczek 390
Rejestracja 393
Kiedy i dlaczego używać dzienników? 394
Zapisywanie wpisów w dziennikach 394
Kanały dzienników 395
Wyszukiwanie pełnotekstowe przy użyciu Laravel Scout 397
Instalacja pakietu Scout 398
Oznaczanie modelu do indeksowania 398
Przeszukiwanie indeksu 398
Kolejki i Scout 399
Wykonywanie operacji bez indeksowania 399
Warunkowe indeksowanie modeli 399
Ręczne wyzwalanie indeksowania z poziomu kodu 400
Ręczne wyzwalanie indeksowania z poziomu wiersza poleceń 400
Testowanie 400
Przechowywanie plików 400
Pamięć podręczna 403
Ciasteczka 403
Rejestrowanie 404
Pakiet Scout 405
TL;DR 405
15. Poczta elektroniczna i powiadomienia 407
Poczta elektroniczna 407
Obsługa "klasycznej" poczty elektronicznej 408
Podstawowe sposoby stosowania składni "wysyłalnej" 408
Szablony e-maili 410
Metody dostępne wewnątrz metody build() 411
Załączniki oraz wstawiane obrazki 412
Wiadomości e-mail w formacie Markdown 413
Wyświetlanie wysyłalnych wiadomości w przeglądarce 415
Kolejki 415
Praca lokalna 416
Powiadomienia 417
Definiowanie metody via() w klasie powiadomienia 420
Wysyłanie powiadomień 420
Umieszczanie powiadomień w kolejce 421
Domyślnie dostępne typy powiadomień 421
Testowanie 425
Poczta elektroniczna 425
Powiadomienia 426
TL;DR 426
16. Kolejki, zadania, zdarzenia, rozgłaszanie i mechanizm planowania 427
Kolejki 427
Dlaczego kolejki? 428
Podstawowa konfiguracja kolejek 428
Zadania umieszczane w kolejkach 428
Uruchamianie procesu roboczego 432
Obsługa błędów 432
Kontrola kolejki 435
Kolejki wspierające działanie innych elementów Laravela 435
Laravel Horizon 435
Zdarzenia 436
Zgłaszanie zdarzeń 437
Nasłuchiwanie zdarzeń 438
Rozgłaszanie zdarzeń przy użyciu WebSocket i Laravel Echo 441
Konfiguracja i ustawienia 442
Rozgłaszanie zdarzeń 442
Odbieranie wiadomości 445
Zaawansowane narzędzia do rozgłaszania 447
Laravel Echo (kliencki kod JavaScript) 451
Mechanizm planujący 455
Dostępne typy zadań 455
Dostępne ramki czasu 456
Definiowanie stref czasowych w zaplanowanych poleceniach 458
Blokowanie i nakładanie 458
Obsługa wyników generowanych przez zadania 458
Punkty zaczepienia zadań 459
Testowanie 459
TL;DR 461
17. Funkcje pomocnicze i kolekcje 463
Funkcje pomocnicze 463
Tablice 463
Łańcuchy znaków 465
Ścieżki aplikacji 467
Adresy URL 468
Różne funkcje 470
Kolekcje 472
Podstawy 472
Kilka metod 474
TL;DR 478
18. Ekosystem Laravela 479
Narzędzia opisane w niniejszej książce 479
Valet 479
Homestead 479
Instalator Laravela 480
Mix 480
Dusk 480
Passport 480
Horizon 480
Echo 481
Narzędzia nieopisane w tej książce 481
Forge 481
Envoyer 481
Cashier 482
Socialite 482
Nova 483
Spark 483
Lumen 483
Envoy 484
Telescope 484
Inne zasoby 484
Słowniczek 487
O autorze: Matt Stauffer - programista i trener, uważany za jednego z najlepszych znawców Laravela. Pracuje w firmie konsultingowej Tighten, w której zajmuje stanowisko dyrektora technicznego. Uwielbia rozmawiać o programowaniu i blogować, jest też twórcą i gospodarzem The Five-Minute Geek Show. Często występuje jako prelegent na branżowych konferencjach. mniej
Laravel w działaniu. Budowa nowoczesnych aplikacji w PHP - Opinie i recenzje
Na liście znajdują się opinie, które zostały zweryfikowane (potwierdzone zakupem) i oznaczone są one zielonym znakiem Zaufanych Opinii. Opinie niezweryfikowane nie posiadają wskazanego oznaczenia.