Laravel 目錄結構

先來說說各個目錄及資料夾裡面放置檔案,並沒有強制規定

根目錄

app 目錄

app 資料夾都是應用程式的核心程式碼,大部分程式碼都放在這。

Bootstarp 目錄

bootstrap 目錄包含的檔案用來啟動框架和設定自動載入;以及包含一個 cache 資料夾,其中內有框架對效能最佳化所產生的檔案,例如 route 和 services 的快取檔案。

Config 目錄

config 目錄底下包含所有應用程式的配置檔案。

Database 目錄

裡面放置資料庫遷移檔案以及填充檔案

Pulic 目錄

public 目錄存放著index.php,此檔案是應用程式的 HTTP 請求入口點。還包含了前端資源,如圖片,JavaScript 和 css

Resources 目錄

目錄包含要使用的 view,原始資源檔(LESS,SASS,CoffeeScript)以及語言檔

Routes 目錄

這個目錄包含所有路由定義,laravel 有預設三個路由檔案,web.phpapi.phpconsole.php

web.php裡面定義的路由都會被RouteServiceProvider分配到 web 的中介層(middleware),因此會具備 Session、CSRF 防護以及 Cookie 加密功能,如果應用程式無需提供無狀態的、RESTful 風格的 API,則所有的路由都會定義在 web.php 檔案中。

api.php 檔案裡定義的路由都會在 RouteServiceProvider 中被指配到 api 中介層群組,具備頻率限制功能,這些路由是無狀態的,所以經由這些路由進入應用程式需要 token 進行認證,並且不能訪問 Session 狀態。

console.php 檔案用於定義所有基於閉包的控制台指令,每個閉包都被繫結到一個控制台指令並且允許與指令列 IO 方法進行互動,儘管這個檔案並不定義 HTTP 路由,但是它定義了基於指令列的應用程式入口(路由)。

Storage 目錄

storage 目錄包含編譯後的 Blade 模板、基於檔案的 session、檔案快取和其它框架生成的檔案。底下資料夾分隔成 app、framework,及 logs 目錄。app 目錄可用於儲存應用程式使用的任何檔案。framework 目錄被用於儲存框架生成的檔案及快取。最後,logs 目錄包含了應用程式的日誌檔案。

storage/app/public 可以用來存放使用者上傳檔案(例如個人大頭照)。為了能公開訪問,需要建立 public/storage 連結(symbolic link),然後指到 storage/app/public 這個資料夾,你可以使用 php artisan storage:link 來建立連結。

Tests 目錄

tests 目錄包含自動化測試的檔案。有預設一個現成的 PHPUnit 範例。每一個測試類都需要新增 Test 字首,你可以使用 phpunit 或者 php vendor/bin/phpunit 指令來執行測試。

Vendor 目錄

vendor 目錄包含你的 Composer 依賴模組,套件檔案都放這。

App 目錄

在 app 目錄中的很多類別都可以透過 Artisan 指令產生,要檢視所有有效的指令,可以在終端機中執行 php artisan list make 指令。

Console 目錄

Console 目錄包含應用程式所有自定義的 Artisan 指令,這些指令類別可以使用 make:command 指令產生。

Events 目錄

Events 目錄預設不存在,會在你使用 event:generate 或 make:event 指令以後才會被建立。此 Events 目錄是用來放置事件類別的。

Exceptions 目錄

Exceptions 目錄包含應用程式的異常處理程序,同時也是個處置應用程式丟擲異常的好位置。如果你想自定義異常的記錄和渲染,你應該修改此目錄下的 Handler 類別。

Http 目錄

Http 目錄包含了控制器、中介層以及表單請求等,幾乎所有進入應用程式的請求處理都放在這裡。

Jobs 目錄

該目錄預設不存在,可以通過執行 make:job 指令建立,Jobs 目錄用於存放佇列任務,應用程式中的任務可以被佇列化,也可以在當前請求生命週期內同步執行。同步執行的任務有時也被看作指令,因為它們實現了命令模式。

Listeners 目錄

這個目錄預設不存在,可以通過執行 event:generate 和 make:listener 指令建立。Listeners 目錄包含處理事件的類別(事件監聽器),事件監聽器接收一個事件並提供對該事件發生後的響應邏輯,例如,UserRegistered 事件可以被 SendWelcomeEmail 監聽器處理。

Mail 目錄

這個目錄預設不存在,但是可以通過執行 make:mail 指令產生,Mail 目錄包含郵件傳送類別,郵件物件允許你在一個地方封裝構建郵件所需的所有業務邏輯,然後使用 Mail::send 方法傳送郵件。

Notifications 目錄

這個目錄預設不存在,可以通過執行 make:notification 指令建立, Notifications 目錄包含應用程式傳送的所有通知。

Policies 目錄

這個目錄預設不存在,可以通過執行 make:policy 指令來建立, Policies 目錄包含了所有的授權策略類別,策略用於判斷某個使用者是否有許可權去訪問指定資源。

Providers 目錄

Providers 目錄包含應用程式的服務提供者。服務提供者在啟動應用程式過程中繫結服務到容器、註冊事件,以及執行其他任務,為即將到來的請求處理做準備。