iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

一套真實運作中的 Laravel 系統,拆解它的原生機制 系列

從一個真實運作中的校園入口網站,看 Eloquent、Policy、Job、Observer、Console Command、外部系統整合這些不靠套件、靠框架本身的機制怎麼用。刻意排除 Filament:素材專案後台雖然用 Filament 開發,但這個系列只挑非 Filament 的核心 Laravel 用法,包含 Model 設計、Nested Set、Backed Enum、Service Container、SOAP 外部整合、檔案上傳安全、Middleware 實戰等真實踩坑案例,全部對照專案實際的 commit 歷史,不是憑空示範。

參賽天數 22 天 | 共 22 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11:排程 sitemap 自動產生——為什麼「產生」跟「回應請求」要刻意拆開

前言:sitemap.xml 應該是即時算出來的,還是預先算好的? 「使用者或搜尋引擎爬蟲請求 sitemap.xml 的時候,即時查資料庫組出 XML 回傳,...

2026-09-12 ‧ 由 recca0120 分享
DAY 12

Day 12:一個 Content-Type 的 bug——sitemap.xml 為什麼 Google 解析不了

前言:sitemap 產生了、路由也對了,為什麼 Google 說讀不到? 昨天講完 sitemap:generate 這支指令怎麼把 sitemap.xml...

2026-09-13 ‧ 由 recca0120 分享
DAY 13

Day 13:Queue Job 基礎——用 Generator 安全迭代日期區間去抓外部資料

前言:抓一整年的資料,跟抓一天的資料,用的應該是同一支 Job 嗎? 「這支 Job 要去外部系統抓新聞,抓一天的資料很快,但如果哪天要補抓過去一整年的資料呢?...

2026-09-14 ‧ 由 recca0120 分享
DAY 14

Day 14:一支 Job 該做多少事?從 16 行 vs 120 行的 Job 看職責邊界

前言:Job 越寫越長,是什麼時候開始不對勁的? 「這支 Job 一開始只是抓資料寫進資料庫,後來陸續加了同步關聯、處理附件、呼叫另一支 Job……現在已經 1...

2026-09-15 ‧ 由 recca0120 分享
DAY 15

Day 15:Observer 兩種註冊方式對照——PHP 8 Attribute vs ServiceProvider

前言:同一個系統裡,Observer 為什麼有兩種不同的註冊寫法? 「Eloquent Observer 不就是在 ServiceProvider 裡 Mode...

2026-09-16 ‧ 由 recca0120 分享
DAY 16

Day 16:Event/Listener——登入事件怎麼靠自動探索變成一筆審計紀錄

前言:這支 Listener 從來沒被手動註冊過,它是怎麼被觸發的? 「Listener 不是要在 EventServiceProvider 裡把 Event...

2026-09-17 ‧ 由 recca0120 分享
DAY 17

Day 17:Service Container 實戰——SOAP Client 怎麼用 Factory 綁定

前言:bind 跟 singleton,這個系統怎麼選? 「Service Container 的 bind 跟 singleton 差在哪,官方文件講得很清楚...

2026-09-18 ‧ 由 recca0120 分享
DAY 18

Day 18:跟外部系統對接——SOAP 協議在 2026 年怎麼用 PSR-18 包起來用

前言:SOAP 已經是老技術了,為什麼現在還要學怎麼接? 「SOAP 不是很多年前的技術了嗎?現在講外部整合,大家講的都是 REST 或 GraphQL,為什麼...

2026-09-19 ‧ 由 recca0120 分享
DAY 19

Day 19:SOAP 逾時防護——從「先能動」到「補上超時控制」的真實演進

前言:「先讓它動起來」跟「一開始就設計完善」,真實專案通常是哪一種? 「跟外部系統對接的程式碼,逾時控制不是一開始就該設計好嗎?」 理論上是這樣沒錯。但今天要老...

2026-09-20 ‧ 由 recca0120 分享
DAY 20

Day 20:XML 容錯——抄一篇公開文章的解法,也要懂它在防什麼

前言:防禦手法一定要自己想出來,才算真的懂嗎? 「這段清理非法字元的 regex 看起來很複雜,是自己想出來的嗎?」 今天要看的這段程式碼,作者的答案很誠實:不...

2026-09-21 ‧ 由 recca0120 分享