Wprowadzenie
Domyślna struktura aplikacji Laravel ma na celu zapewnienie doskonałego punktu wyjścia zarówno dla dużych, jak i małych aplikacji. Możesz jednak zorganizować swoją aplikację w dowolny sposób. Laravel nie nakłada prawie żadnych ograniczeń na to, gdzie znajduje się dana klasa – o ile Composer może ją automatycznie załadować.
Jesteś nowy w Laravel? Sprawdź Laravel Bootcamp, aby uzyskać praktyczną wycieczkę po frameworku, podczas gdy my przeprowadzimy Cię przez proces tworzenia pierwszej aplikacji Laravel.
Katalog główny
Katalog aplikacji
Katalog app
zawiera podstawowy kod aplikacji. Omówimy ten katalog bardziej szczegółowo wkrótce; jednak prawie wszystkie klasy w aplikacji będą znajdować się w tym katalogu.
Katalog Bootstrap
Katalog bootstrap
zawiera plik app.php
, który uruchamia framework. W tym katalogu znajduje się również katalog pamięci podręcznej
, który zawiera pliki wygenerowane przez framework w celu optymalizacji wydajności, takie jak pliki pamięci podręcznej tras i usług. Zazwyczaj nie ma potrzeby modyfikowania żadnych plików w tym katalogu.
Katalog konfiguracji
Katalog config
, jak sama nazwa wskazuje, zawiera wszystkie pliki konfiguracyjne aplikacji. Dobrym pomysłem jest przeczytanie wszystkich tych plików i zapoznanie się ze wszystkimi dostępnymi opcjami.
Katalog baz danych
Katalog bazy
danych zawiera migracje bazy danych, fabryki modeli i nasiona. Jeśli chcesz, możesz również użyć tego katalogu do przechowywania bazy danych SQLite.
Katalog publiczny
Katalog publiczny
zawiera plik index.php
, który jest punktem wejścia dla wszystkich żądań wchodzących do aplikacji i konfiguruje automatyczne ładowanie. W tym katalogu znajdują się również zasoby, takie jak obrazy, JavaScript i CSS.
Katalog zasobów
Katalog zasobów
zawiera widoki, a także surowe, nieskompilowane zasoby, takie jak CSS lub JavaScript.
Katalog tras
Katalog tras
zawiera wszystkie definicje tras dla aplikacji. Domyślnie Laravel zawiera kilka plików tras: web.php
, api.php
, console.php
i channels.php
.
Plik web
.php zawiera trasy, które RouteServiceProvider
umieszcza w grupie web
middleware, która zapewnia stan sesji, ochronę CSRF i szyfrowanie plików cookie. Jeśli aplikacja nie oferuje bezstanowego interfejsu API RESTful, wszystkie trasy zostaną najprawdopodobniej zdefiniowane w pliku web
.php.
Plik api.
php zawiera trasy, które RouteServiceProvider
umieszcza w grupie oprogramowania pośredniczącego api
. Trasy te mają być bezstanowe, więc żądania wchodzące do aplikacji za pośrednictwem tych tras mają być uwierzytelniane za pomocą tokenów i nie będą miały dostępu do stanu sesji.
Plik console.
php jest miejscem, w którym można zdefiniować wszystkie polecenia konsoli oparte na zamknięciach. Każde zamknięcie jest powiązane z instancją polecenia, co pozwala na proste podejście do interakcji z metodami IO każdego polecenia. Mimo że plik ten nie definiuje tras HTTP, definiuje punkty wejścia (trasy) do aplikacji oparte na konsoli.
Plik channels.
php to miejsce, w którym można zarejestrować wszystkie kanały transmisji zdarzeń obsługiwane przez aplikację.
Katalog pamięci masowej
Katalog storage
zawiera logi, skompilowane szablony Blade, sesje oparte na plikach, cache plików i inne pliki generowane przez framework. Katalog ten jest podzielony na katalogi app
, framework
i logs
. Katalog app
może być używany do przechowywania dowolnych plików generowanych przez aplikację. Katalog framework
służy do przechowywania plików i pamięci podręcznych generowanych przez framework. Katalog logs
zawiera pliki dziennika aplikacji.
Katalog storage/app/public
może być używany do przechowywania plików generowanych przez użytkowników, takich jak awatary profilowe, które powinny być publicznie dostępne. Powinieneś utworzyć dowiązanie symboliczne w public/storage
, które wskazuje na ten katalog. Dowiązanie można utworzyć za pomocą polecenia php artisan storage:link
Artisan.
Katalog testów
Katalog tests
zawiera zautomatyzowane testy. Przykładowe testy jednostkowe PHPUnit i testy funkcji są dostarczane po wyjęciu z pudełka. Każda klasa testowa powinna być poprzedzona słowem Test
. Testy można uruchamiać za pomocą poleceń phpunit
lub php vendor/bin/phpunit
. Lub, jeśli chcesz uzyskać bardziej szczegółową i piękną reprezentację wyników testów, możesz uruchomić testy za pomocą polecenia php artisan test
Artisan.
Katalog sprzedawców
Katalog dostawców
zawiera zależności Composera.
Katalog aplikacji
Większość aplikacji znajduje się w katalogu app
. Domyślnie, katalog ten ma przestrzeń nazw App
i jest automatycznie ładowany przez Composer przy użyciu standardu automatycznego ładowania PSR-4.
Katalog aplikacji
zawiera wiele dodatkowych katalogów, takich jak Console
, Http
i Providers
. Katalogi Console
i Http
stanowią interfejs API do rdzenia aplikacji. Protokół HTTP i CLI są mechanizmami interakcji z aplikacją, ale w rzeczywistości nie zawierają logiki aplikacji. Innymi słowy, są to dwa sposoby wydawania poleceń aplikacji. Katalog Console
zawiera wszystkie polecenia Artisan, podczas gdy katalog Http
zawiera kontrolery, oprogramowanie pośredniczące i żądania.
Wiele innych katalogów zostanie wygenerowanych wewnątrz katalogu app
, gdy użyjesz poleceń make
Artisan do wygenerowania klas. Na przykład katalog app/Jobs
nie będzie istniał, dopóki nie zostanie wykonane polecenie make:job
Artisan w celu wygenerowania klasy zadania.
Wiele klas w katalogu
aplikacji
może być generowanych przez Artisan za pomocą poleceń. Aby przejrzeć dostępne polecenia, uruchom poleceniephp artisan list make
w terminalu.
Katalog nadawców
Katalog Broadcasting
zawiera wszystkie klasy kanałów nadawczych dla aplikacji. Klasy te są generowane za pomocą polecenia make:channel
. Katalog ten nie istnieje domyślnie, ale zostanie utworzony podczas tworzenia pierwszego kanału. Aby dowiedzieć się więcej o kanałach, zapoznaj się z dokumentacją dotyczącą transmisji zdarzeń.
Katalog konsoli
Katalog Console
zawiera wszystkie niestandardowe polecenia Artisan dla aplikacji. Polecenia te można wygenerować za pomocą polecenia make:command
. W tym katalogu znajduje się również jądro konsoli, w którym rejestrowane są niestandardowe polecenia Artisan i definiowane są zaplanowane zadania.
Katalog wydarzeń
Katalog ten nie istnieje domyślnie, ale zostanie utworzony przez polecenia event:generate
i make:event
Artisan. Katalog Events
zawiera klasy zdarzeń. Zdarzenia mogą być używane do ostrzegania innych części aplikacji o wystąpieniu danej akcji, zapewniając dużą elastyczność i rozłączność.
Katalog wyjątków
Katalog Exceptions
zawiera program obsługi wyjątków aplikacji i jest również dobrym miejscem do umieszczania wszelkich wyjątków rzucanych przez aplikację. Jeśli chcesz dostosować sposób rejestrowania lub renderowania wyjątków, powinieneś zmodyfikować klasę Handler
w tym katalogu.
Katalog http
Katalog Http
zawiera kontrolery, oprogramowanie pośredniczące i żądania formularzy. Prawie cała logika do obsługi żądań wchodzących do aplikacji zostanie umieszczona w tym katalogu.
Katalog ofert pracy
Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:job
Artisan. Katalog Jobs
zawiera zadania kolejkowane dla aplikacji. Zadania mogą być kolejkowane przez aplikację lub uruchamiane synchronicznie w ramach bieżącego cyklu życia żądania. Zadania uruchamiane synchronicznie podczas bieżącego żądania są czasami określane jako „polecenia”, ponieważ są implementacją wzorca poleceń.
Katalog słuchaczy
Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu poleceń event:generate
lub make:listener
Artisan. Katalog Listeners
zawiera klasy obsługujące zdarzenia. Odsłuchiwacze zdarzeń otrzymują instancję zdarzenia i wykonują logikę w odpowiedzi na wystrzelenie zdarzenia. Na przykład zdarzenie UserRegistered
może być obsługiwane przez listener SendWelcomeEmail
.
Katalog poczty
Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:mail
Artisan. Katalog Mail
zawiera wszystkie klasy reprezentujące wiadomości e-mail wysyłane przez aplikację. Obiekty Mail umożliwiają hermetyzację całej logiki tworzenia wiadomości e-mail w pojedynczej, prostej klasie, którą można wysłać za pomocą metody Mail::send
.
Katalog modeli
Katalog Models
zawiera wszystkie klasy modeli Eloquent. Eloquent ORM dołączony do Laravel zapewnia piękną, prostą implementację ActiveRecord do pracy z bazą danych. Każda tabela bazy danych ma odpowiedni „Model”, który jest używany do interakcji z tą tabelą. Modele umożliwiają wyszukiwanie danych w tabelach, a także wstawianie nowych rekordów do tabeli.
Katalog powiadomień
Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:notification
Artisan. Katalog Notifications
zawiera wszystkie „transakcyjne” powiadomienia wysyłane przez aplikację, takie jak proste powiadomienia o zdarzeniach, które mają miejsce w aplikacji. Funkcja powiadomień Laravel abstrahuje wysyłanie powiadomień przez różne sterowniki, takie jak e-mail, Slack, SMS lub przechowywane w bazie danych.
Katalog polityk
Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:policy
Artisan. Katalog Policies
zawiera klasy zasad autoryzacji dla aplikacji. Zasady są używane do określenia, czy użytkownik może wykonać daną akcję na zasobie.
Katalog dostawców
Katalog Providers
zawiera wszystkich dostawców usług dla aplikacji. Dostawcy usług uruchamiają aplikację, wiążąc usługi w kontenerze usług, rejestrując zdarzenia lub wykonując inne zadania w celu przygotowania aplikacji na przychodzące żądania.
W świeżej aplikacji Laravel katalog ten będzie już zawierał kilku dostawców. W razie potrzeby możesz dodać własnych dostawców do tego katalogu.
Katalog zasad
Katalog ten nie istnieje domyślnie, ale zostanie utworzony po wykonaniu polecenia make:rule
Artisan. Katalog Rules
zawiera niestandardowe obiekty reguł walidacji dla aplikacji. Reguły są używane do hermetyzacji skomplikowanej logiki walidacji w prostym obiekcie. Więcej informacji można znaleźć w dokumentacji walidacji.