我第一個使用的框架是CI,雖然都是PHP框架,但是剛打開就傻眼了,檔案位置放的真的差滿多的
所以才會開始紀錄自己學習的過程,加深印像。官方文件有些介紹的很繞舌,自己看了好幾遍也沒有懂,
也參考了一些其它的學習日誌,盡量把功能翻的白話些。
介紹
您可以隨意組織您的應用程序。Laravel 對任何given class的位置幾乎沒有任何限制 - 只要 Composer 可以自動加載該class。
laravel的檔案位置
上面的資料夾有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 專案所需的套件和第三方程式庫,例如處理資料庫、管理路由、驗證表單、傳送電子郵件等。
你所有的開發幾乎都會放在這個資料夾
-----預設資料
-----預設不存在,需進行額外安裝
補充:Slack 是一個企業即時通訊工具,讓團隊成員之間可以快速地溝通、分享資訊、協同作業等等。
在 Slack 中,你可以建立不同的頻道,例如公共頻道、私人頻道、專案頻道等等,並邀請團隊成員加入。每個頻道有自己的聊天室,讓成員可以在其中發送訊息、分享文件、貼圖等等,同時也可以進行語音、視訊通話。
通常使用以下兩種方式:
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