Laravel8學習筆記01 - 目錄結構

IT小馬發表於2021-10-31

根目錄

目錄二級目錄簡介作用
/app 應用目錄應用的核心程式碼
/bootstrap 啟動目錄
app.php 框架的啟動和自動載入配置
./cache路由和服務快取框架為提升效能所生成的檔案
/config 配置目錄
/database 資料庫目錄資料庫遷移檔案及填充檔案
/public 對外公開目錄應用入口檔案和前端資原始檔
index.php應用入口檔案
/resources 資源目錄應用檢視檔案和未編譯的原生前端資原始檔
/routes 路由目錄
web.phpweb 中介軟體組支援 Session、CSRF 保護以及 Cookie 加密功能
api.phpapi 中介軟體組支援頻率限制功能
console.php控制檯命令用於定義所有基於閉包的控制檯命令
channels.php 用於註冊應用支援的所有事件廣播頻道
/storage 檔案儲存目錄Blade 、 Session、檔案快取,框架生成的檔案
./app 應用生成的檔案
./public用於儲存使用者生成的檔案
./framework 框架生成的檔案和快取
./logs 應用的日誌檔案
/tests 測試目錄可以通過 phpunit命令執行測試
/vendor 依賴目錄包含了應用所有通過 Composer 載入的依賴

備註

1.控制檯路由 /routes/console.php

Artisan::command('inspire', function () {
    $this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');

php artisan inspire

應用目錄 /app

目錄簡介作用
/Broadcasting廣播頻道類事件廣播。make:channel
/Console任務指令碼註冊Artisan命令,定義排程任務。make:command
/Events事件存放事件類。event:generatemake:event
/Exceptions異常處理包含應用的異常處理器
/HttpWeb應用包含了控制器、中介軟體以及表單請求等
/Jobs佇列任務存放佇列任務。make:job
/Listeners事件監聽事件監聽器。event:generatemake:listener
/Mail郵件郵件相關類。make:mail
/ModelsEloquent模型Eloquent模型類。make:model
/Notifications通知傳送通知。make:notification
/Policies授權授權策略。make:policy
/Providers服務提供者在應用啟動過程中繫結服務到容器、註冊事件以及執行其他任務。
/Rules驗證規則在單個物件中封裝複雜的驗證邏輯。make:rule

備註

PSR-4自動載入標準 https://learnku.com/docs/psr/...
1. 此處的“類”泛指所有的class類、介面、traits可複用程式碼塊以及其它類似結構。
2. 一個完整的類名需具有以下結構:
 \<名稱空間>(\<子名稱空間>)*\<類名>
  1. 完整的類名必須要有一個頂級名稱空間,被稱為 "vendor namespace";
  2. 完整的類名可以有一個或多個子名稱空間;
  3. 完整的類名必須有一個最終的類名;
  4. 完整的類名中任意一部分中的下滑線都是沒有特殊含義的;
  5. 完整的類名可以由任意大小寫字母組成;
  6. 所有類名都必須是大小寫敏感的。
  7. 當根據完整的類名載入相應的檔案……
  8. 完整的類名中,去掉最前面的名稱空間分隔符,前面連續的一個或多個名稱空間和子名稱空間,作為“名稱空間字首”,其必須與至少一個“根目錄”相對應;
  9. 緊接名稱空間字首後的子名稱空間必須與相應的”檔案基目錄“相匹配,其中的名稱空間分隔符將作為目錄分隔符
  10. 末尾的類名必須與對應的以 .php 為字尾的檔案同名。
  11. 自動載入器(autoloader)的實現一定不能丟擲異常、一定不能觸發任一級別的錯誤資訊以及不應該有返回值。
3. 範例

| 完整類名 | 名稱空間字首 | 檔案基目錄 | 檔案路徑 |
| :--------------------------- | :-------------- | :--------------------- | :---------------------------------------- |
| \Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
| \Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
| \Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
| \Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |

相關文章