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
aplikacjimoże być generowanych przez Artisan za pomocą poleceń. Aby przejrzeć dostępne polecenia, uruchom poleceniephp artisan list makew 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.




