# laravel DTO 必看 https://stitcher.io/blog/laravel-beyond-crud-02-working-with-data https://www.reddit.com/r/laravel/comments/k2pkoq/how_are_you_using_data_transfer_objects_with/ https://www.youtube.com/watch?v=ECRd-kXhaKg https://sergeyem.ru/en/blog/63 https://stitcher.io/blog/laravel-beyond-crud-02-working-with-data https://github.com/spatie/data-transfer-object https://luis-barros-nobrega.medium.com/laravel-service-layer-with-dtos-and-validators-2c6303899a57 https://twitter.com/mmartin_joo/status/1488896259482165249 推薦 ## 介紹 幫助我們構建可能來自不同類型請求的數據 可以來自控制器、HTTP 請求、命令或其他 主要在請求對象跟動作分離 控制器將任務傳遞給動作,然後將其分發給任務。關鍵問題如下 - 如果不建議我們使用請求,我們如何將控制器提供給我們的信息傳遞給其他類? 類似的情況以相反的順序發生。當我們得到模型並且需要處理其中的數據時,從 Laravel 中抽像出來的最佳方法是什麼? 這裡有兩個選項。最簡單的一種是將請求或模型轉換為數組並使用它。但是這裡我們面臨著語法高亮和弱類型的問題。我們不知道數組中有什麼樣的數據,數組中存儲的是什麼類型的值。 casts是寫進資料庫才會用到喔 別記錯 以使用 DTO (數據傳輸對象)。這是一種非常有用的方法, 可以將數據解耦並將其傳遞到系統代碼中,而不會與任何東西(在本例中為請求)緊密耦 合。要將 DTO 添加到我們的項目中,我們將使用 Spatie 的 ![](https://i.imgur.com/VK35QMq.png) 定義 ![](https://i.imgur.com/cNLeQQr.png) 在驗證使用 ![](https://i.imgur.com/FH7g43m.png) controller ![](https://i.imgur.com/Sqz80L6.png) 大概的意思就是request解偶 用封裝物件讓他自由使用 Ex截圖的商店store 可能在user這邊也會用到 就把他共用 ## 演化 ![](https://i.imgur.com/ppqdFX0.png) ![](https://i.imgur.com/jge4IcF.png) ![](https://i.imgur.com/xSTZRXR.png) ![](https://i.imgur.com/tahQLhO.png) ![](https://i.imgur.com/L5Ik82H.png) ###### tags: `Laravel`