首頁 >後端開發 >php教程 >超越 MVC:使用 DataForge 重新定義後端開發

超越 MVC:使用 DataForge 重新定義後端開發

DDD
DDD原創
2025-01-12 16:25:43287瀏覽

Beyond MVC: Redefining Backend Development with DataForge

後端開發通常依賴 MVC(模型-視圖-控制器)架構,Laravel 的 Eloquent ORM 等框架提供了堅實的基礎。然而,擴展複雜的專案會帶來挑戰:管理可重複使用的 SQL 邏輯、針對不同的輸出格式調整查詢、處理複雜的實體關係以及設計可擴展的 API。 這些障礙激發了 DataForge 的創建,這是一個基於 Laravel 的框架,超越了傳統 MVC 的限制。 DataForge 倡議以產品為中心的方法,優先考慮模組化、可擴展性和可維護性。


DataForge 的顯著特徵

1。模組化SQL類別設計

Eloquent 簡化了資料庫交互,但通常需要重複程式碼來滿足不同的查詢需求(例如,檢索清單與單行)。 DataForge 透過可重複使用的 SQL 類別解決了這個問題,支援模組化選擇類型以有效處理多個用例。

範例:

<code class="language-php">$query = new Query('ProductList');
$query->select('list', 'p.id, p.name, p.price, c.name AS category'); 
$query->select('item', 'p.id, p.name, p.description, p.price, c.name AS category');
$query->select('options', 'p.id, p.name'); 
$query->select('total', 'COUNT(p.id) AS totalCount'); 
$query->filterOptional('p.category_id = {category_id}'); 
$query->filterOptional('p.name LIKE {%keyword%}'); 
$query->order('{sort}', '{order}');</code>

這允許檢索:

  • 產品列表$products = Sql('Product:list', ['select' => 'list'])->fetchRowList();
  • 單品詳情$product = Sql('Product:list', ['select' => 'item', 'id' => 123])->fetchRow();
  • 總計數$count = Sql('Product:list', ['select' => 'total'])->fetchColumn();

2。高階實體功能

雄辯的模型經常混合資料存取和商業邏輯,影響可維護性。 DataForge 的 Entity 類別透過徹底分離這些問題並結合高階功能來提高模組化性:

  • 延遲加載:屬性僅在訪問時加載,透過避免不必要的查詢來優化效能。 $product = DataForge::getProduct(123); echo $product->Price;(僅在訪問時加載 getPrice())。

  • 實體間連結:實體之間輕鬆的關係管理,以簡化資料擷取。 $product = DataForge::getProduct(123); $category = $product->Category;(直接取得相關類別實體)。

範例:產品實體

<code class="language-php">class Product extends Entity
{
    function init($id)
    {
        return \Sql('Product:list', ['id' => $id, 'select' => 'entity'])->fetchRow();
    }

    function getCategory()
    {
        return DataForge::getCategory($this->category_id);
    }
}</code>

3。多功能API介面

DataForge 提供七個強大的 API 端點,為後端互動提供結構化、可擴展的方法:

  • /api/list:分頁記錄清單。
  • /api/all:所有符合記錄(無分頁)。
  • /api/item:單一記錄檢索。
  • /api/field:單列值檢索。
  • /api/entity:直接實體操作,包括延遲載入和關係。
  • /api/Task:結合 SQL 和實體操作的複雜工作流程。
  • /api/GuestTask:對特定工作流程的安全、有限的訪客訪問。

範例:分頁產品清單:/api/list/Product:list?keyword=test&pageNo=1&limit=10&sort=price&order=asc

範例回應(JSON):

<code class="language-php">$query = new Query('ProductList');
$query->select('list', 'p.id, p.name, p.price, c.name AS category'); 
$query->select('item', 'p.id, p.name, p.description, p.price, c.name AS category');
$query->select('options', 'p.id, p.name'); 
$query->select('total', 'COUNT(p.id) AS totalCount'); 
$query->filterOptional('p.category_id = {category_id}'); 
$query->filterOptional('p.name LIKE {%keyword%}'); 
$query->order('{sort}', '{order}');</code>

這種模組化方法簡化了 API 開發,同時保持了靈活性和可擴充性。


4。基於 SQL 的工作流程管理

傳統框架通常需要不同的方法來取得清單、單行或聚合資料。 DataForge 在 SQL 類別中的模組化選擇類型允許動態調整查詢以傳回所需的資料格式,而無需冗餘編碼。


DataForge 對 Laravel 的增強

將 DataForge 整合到 Laravel 專案中可以提供:

  • 透過可重複使用的 SQL 查詢簡化查詢邏輯。
  • 高階實體關係和延遲載入。
  • 適應多種資料格式(清單、行、列),無需重複程式碼。
  • 使用預先建置端點簡化 API 開發。
  • 透過 filterOptionalfilterAnyOneRequired 等功能增強性能和安全性。

更多資訊和入門

DataForge 是一個全面的後端工具包,旨在高效建構結構化、可擴展的產品。

  • 文件:data-forge.tech
  • 更新:LinkedIn 頁面
  • 儲存庫:GitHub 儲存庫

我們鼓勵回饋和討論 DataForge 與您目前工具的比較。


討論重點

  • 您目前如何管理 SQL 查詢、API 和實體關係?
  • 您在使用 Eloquent 這樣的 ORM 時遇到過哪些挑戰?

讓我們合作重新定義後端開發。

以上是超越 MVC:使用 DataForge 重新定義後端開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn