Laravel w działaniu. Budowa nowoczesnych aplikacji w PHP. Wydanie II - ebook
Laravel w działaniu. Budowa nowoczesnych aplikacji w PHP. Wydanie II - ebook
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 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
Kategoria: | Webmaster |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7634-2 |
Rozmiar pliku: | 4,6 MB |