iT邦幫忙

0

[框架]-laravel8 -目錄結構&app介紹

  • 分享至 

  • xImage
  •  

我第一個使用的框架是CI,雖然都是PHP框架,但是剛打開就傻眼了,檔案位置放的真的差滿多的
所以才會開始紀錄自己學習的過程,加深印像。官方文件有些介紹的很繞舌,自己看了好幾遍也沒有懂,
也參考了一些其它的學習日誌,盡量把功能翻的白話些。

介紹
您可以隨意組織您的應用程序。Laravel 對任何given class的位置幾乎沒有任何限制 - 只要 Composer 可以自動加載該class。

laravel的檔案位置

Imgur

上面的資料夾有app、bootstrap、config、database、public、resources、routes、storage、tests、vendor

1.app

放置你的核心應用程序,幾乎所有你的Class都放置在這個資料夾

2.bootstrap(引導程序)

啟動laravel的地方,包含一個app.php(引導框架的文件)與cache的資料夾(性能優化的框架生成的文件,例如路由和服務緩存文件) ,通常不需要修改此目錄中的任何文件。

3.config

所有應用程序的配置檔

4.database

factories:用來製造假的資料,比如說在測試時可以用這個目錄下的檔案快速建立假的資料。
migrations:寫Schema的功能,用來管理資料庫結構的變更,變更資料庫結構時可以寫程式碼到這個目錄下的檔案裡。
seeders:用來建立初始的資料,比如說剛建立資料庫時可以用這個目錄下的檔案填充一些預設的資料幫。這樣可以方便測試與開發,同時也避免了每次重建資料庫時需要手動填充資料的麻煩。

$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.07 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.08 seconds)

5.public

包含該index.php文件,(.htacess)所有請求進入您的應用程序並配置自動加載的入口點。(文件說明:此目錄還包含您的資產例如js,img,css ,only for檔案入口。)

6.resources

view: 存放每個頁面的樣板(使用blade樣版 用法{{}},CI的用法是{})。
javascript: js檔
css: css檔
lang: 多國語系

7.routes

應用程序路由定義,設置url對應controller的地方。預設情況下,Laravel 包含
web.php: 定義網站應用程式的路由(我開發的是網站大部分是route是設置在這邊。)
api.php: 定義 API 服務的路由,也就是提供給其他程式 (如手機應用程式或第三方服務) 使用的路由。(無狀態路由)
console.php:定義控制台應用程式的路由,也就是可以在命令列執行的指令。
channels.php:定義事件的頻道路由,也就是在 Laravel 的事件系統中,用來傳送事件的通道。
補充:無狀態路由,是指一種路由機制(就是你上次請求和下次請求沒關係,通常指的是cookie 以及session的認證訊息)

8.storage

app:用於存儲應用程序生成的任何文件。通常是放在storage/app/public
framework:用於存儲框架生成的文件和緩存,例如路由、view、設定等資料。
logs:應用程序的日誌文件,可以協助開發者追蹤應用程式的運行狀態和調試錯誤。
database:用來儲存資料庫備份、Session 資料、Queue 資料等資料。

9.tests(自動化測試)

Feature:驗證應用程式的不同功能是否正常運作。
Unit:驗證應用程式中不同的函式和方法是否正確地實現了所需的邏輯和功能。
每個測試類都應以單詞為後綴Test,您可以使用phpunit或php vendor/bin/phpunit命令運行您的測試。

10.vendor

當您在 Laravel 專案中使用 composer 工具安裝套件時,這些套件的原始碼和相關資源會被下載到 vendor 資料夾中。
通常用來存放 Laravel 專案所需的套件和第三方程式庫,例如處理資料庫、管理路由、驗證表單、傳送電子郵件等。

Imgur

你所有的開發幾乎都會放在這個資料夾

-----預設資料

  • Console
    透過終端機來執行,例如執行資料庫遷移、清除快取、發送郵件等。
    您的應用程序的所有自定義 Artisan 命令。這些命令可以使用make:command命令生成。
  • Exceptions
    用來處理應用程式的異常錯誤(exceptions),例如處理 404 錯誤、500 錯誤等。
    如果想自定義異常的記錄或呈現方式,修改Handler的class
  • Http
    Http目錄包含controllers,middleware。幾乎所有處理進入應用程序的請求的邏輯都將放在這個目錄中。
    controllers: 用來處理 HTTP 請求的,例如取得資料、儲存資料、刪除資料等等
    middleware: 處理 HTTP 請求和回應的程式碼,可以對請求或回應進行修改、驗證、過濾等操作。通常會被綁定在路由或控制器上,會依序執行所有的中介層,直到最終執行控制器方法並回傳回應。
  • Models
    使用Eloquent ORM 提供了一個漂亮、簡單的ActiveRecord實現來處理你的資料庫。
    *補充:Eloquent ORM 是 Laravel 的一個模組,可以讓你以物件導向的方式操作資料庫,
  • Providers
    用來提供應用程式所需的服務(services),例如資料庫連線、郵件發送、事件觸發等。
    在一個新的 Laravel 應用程序中,這個目錄已經包含了幾個提供者。您可以根據需要隨意將自己的提供程序添加到此目錄中。

-----預設不存在,需進行額外安裝

  • Broadcasting
    您的應用程序的所有廣播頻道類(默認情況下此目錄不存在)。使用make:channel命令生成的。
    搭配Laravel Echo、Pusher來使用補充說明
  • Events
    默認情況下該目錄不存在,但能通過event:generate和make:eventArtisan 命令為您創建。
    通常會配合listener使用
  • Jobs
    默認情況下該目錄不存在,可執行make:job的Artisan命令創建,通常是需要在背景執行的複雜操作,例如發送郵件、生成報表等。
  • Listeners
    該目錄默認不存在,可執行event:generate或make:listener的Artisan命令創建。
    通常會被綁定在事件上,當事件觸發時,相關的 Listeners 會被自動呼叫。這樣可以實現應用程式的各種功能,如發送郵件、推送訊息、建立記錄等等。
  • Mail
    該目錄默認不存在,可執行make:maild的Artisan 命令創建。
    用來發送電子郵件的功能,實現各種功能,如發送驗證信、發送訂閱通知、發送重要通知等等。
    你可以建立郵件模板,設定收件人、主旨、附件,然後使用 Mail 類別的方法來發送郵件。
  • Notifications
    該目錄默認不存在,可執行make:notificationArtisan 命令創建。
    Laravel 的通知功能抽象了通過各種驅動程序發送通知,例如電子郵件、Slack、SMS,或存儲在數據庫中。

補充:Slack 是一個企業即時通訊工具,讓團隊成員之間可以快速地溝通、分享資訊、協同作業等等。
在 Slack 中,你可以建立不同的頻道,例如公共頻道、私人頻道、專案頻道等等,並邀請團隊成員加入。每個頻道有自己的聊天室,讓成員可以在其中發送訊息、分享文件、貼圖等等,同時也可以進行語音、視訊通話。

  • Policies
    該目錄默認不存在,可執行make:policy的Artisan命令創建。
    Policies 是 Laravel 框架中的一個授權功能,用於在應用程式中定義對資源的權限控制。

通常使用以下兩種方式:
1.授權方法:定義在 Policy 類別中的方法,用於檢查是否具有執行某個動作的權限。例如,可以定義一個 canEdit() 方法,用於檢查當前使用者是否可以編輯 Post。
2.Gate 功能:Laravel 中的 Gate 功能可以用於檢查當前使用者是否擁有某個權限,可以在控制器、路由等地方使用。Policies 可以使用 Gate 功能來實現更複雜的授權邏輯。

-Rules
該目錄默認不存在,可執行make:rule的Artisan命令創建。
用於驗證輸入數據的工具,通常用於驗證表單提交的數據是否符合指定的規則。

Rules 可以用於檢查輸入數據是否符合以下條件:

必填:例如 required,表示某個字段是必填的。
字符串長度:例如 min、max,表示某個字符串字段的長度必須在指定的範圍內。
數字大小:例如 numeric、integer,表示某個數字字段必須符合指定的數字類型和範圍。
正則表達式:例如 regex,表示某個字段必須符合指定的正則表達式。
唯一性:例如 unique,表示某個字段的值必須在數據庫中是唯一的。

參考網址:https://yeeinhole.github.io/2020/04/25/laravel-1/
參考網址:https://laravel.com/docs/8.x/structure


讀完app目錄以後發現他好多功能放置的位置好相似

例如Mail 跟Notifications就都是處理相關郵件,
mail是發送郵件用來處理密碼重置或是認證確認之類的
Notifications發送郵件是通知訂單成功或是註冊完成之類的

或是database檔下的factories或是seeds都是生成假資料
factories:比較適合用來建立單一模型的假資料
seeds:用來初始化整個資料庫,或是建立多個模型之間的關聯資料。

補充說明一下Laravel的MVC檔案分別放置
app/Models
resources/views
app/Http/Controllers


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言