[譯]Laravel 介面最佳實作

首先,介面(Interface)是物件導向的基礎,在 Laravel 中,介面被用來定義規範 Contracts ,即規定類別 class 必須實作的方法。讓我們可以建立彈性且模組化的程式碼且容易維護和測試。

本文我們將探索如何在 Laravel 中使用介面實作,如何為 Service 定義介面,使用相依注入 DI(Dependency Injection) ,繫結 Service 到應用程式 Container

另外補充;``Factory` 工廠模式是一種建立物件的設計模式,主要用途除了生成測試資料還可以協助「相依注入」建立需要的物件。上面幾個概念將有助於我們實現更具可維護性,可讀性的程式碼。

繼續閱讀

Laravel Passport 和 OAuth2

Laravel Passport 提供了 Laravel 應用程式完整的 OAuth2 伺服器實作整合。Passport 是基於 League OAuth2 Server 套件建置。

如果您還不知道何謂 OAuth2,在繼續之前,請先熟悉 OAuth2 的一般術語和功能。

參考資源

繼續閱讀

Zero2Hero:部署 Laravel 10 到 GKE

本文僅針對 macOS 環境,全文目標為部署一個 Laravel 10 專案至 GKE。

  • 使用 GKE 運行 Laravel 應用程式
  • 使用 Google ManagedCertificate 自動管理 SSL 憑證
  • 使用 Cloudfare 作為反向代理並使用 SSL 完整或嚴格模式
繼續閱讀

Laravel 如何在 Jetstream 或 Fortify 覆寫登入後導向

由於專案已經陸續採用 Laravel Jetstream 並且遇到一個需求; 根據使用的類型在登入時導向不同路由。想像一個情境,您有一般使用者和管理員,而管理員擁有後台功能。通常可能會需要將管理員導向後台介面。

使用 Laravel Jetstream 或 Fortify,要實作這個功能並不直覺,特別是使用兩階段驗證。

繼續閱讀

TinyMCE 6 處理圖片上傳, 整合 Laravel, React, TypeScript

若您只想參考如何快速整合 Laravel + TypeScript + TinyMCE 範例可直接至最下方該節。

TinyMCE 使用 Image Uploader 上傳編輯圖片。這讓 TinyMCE 支援了圖片編輯的功能。通過其他方式加入的本地圖片也使用這個功能上傳。例如使用 paste_data_images設定搭配拖拉圖片,或使用 PowerPaste 套件,TinyMCE 會自動更新 <img>src 屬性。

繼續閱讀

Inertia - Server-side Rendering (SSR) 以 React 為範例

本文為官方文件翻譯,如使用其他前端框架可參考官方

SSR 支援提前渲染造訪的頁面,並且回傳渲染的 HTML 到瀏覽器。這讓造訪者可以在資源完整載入之前看到並和頁面互動,另外提供的好處像是減少搜尋引擎分析建置索引的時間,優化 SEO。

繼續閱讀

Laravel 8 自動產生 Sitemap

Sitemap 是否真的必須?

理論上 Sitemap 協助搜尋引擎的網頁爬蟲發現您網站所有的頁面。Google 文件有詳細說明

如果您網站的頁面都有正確的連結,爬蟲通常可以發現全部的頁面。即便如此,Sitemap 也可以改善網頁抓取尤其是您的網站滿足下拉條件之一時:

  • 您的網站非常大。因此 Google 爬蟲有可能會忽略抓取一些最近更新的頁面
  • 您的網站有大量內容頁面存檔。這些頁面屬於獨立頁面或沒有被妥善連結。如果您的網站本身每個頁面沒有做好參考關聯,您可以將他們列在 Sitemap 上來確保 Google 不會忽略它們。
  • 您的網站是新網站,當下幾乎沒有外部連結。Google Bot 和其他爬蟲是根據某個頁面的連結來找到另一個頁面的。如果外部沒有任何連結,結果就是 Google 可能根本沒有發現您的頁面。
  • 您的網站使用大量媒體內容,顯示在 Google News 或其他網站相容的 Sitemap 註記
繼續閱讀

正確使用 Laravel Eloquent

自 Laravel 5.3 之後,看到過許多專案的 Eloquent 關聯與查詢都不是使用相對有效率的用法。這些情況之所以存在是因為有不同的方法可以取得同一個資料集,而且多數看起來非常像。除非您非常了解底層做了什麼,不然判斷哪個方法比較好也不是那麼容易。

繼續閱讀