後端開發通常依賴 MVC(模型-視圖-控制器)架構,Laravel 的 Eloquent ORM 等框架提供了堅實的基礎。然而,擴展複雜的專案會帶來挑戰:管理可重複使用的 SQL 邏輯、針對不同的輸出格式調整查詢、處理複雜的實體關係以及設計可擴展的 API。 這些障礙激發了 DataForge 的創建,這是一個基於 Laravel 的框架,超越了傳統 MVC 的限制。 DataForge 倡議以產品為中心的方法,優先考慮模組化、可擴展性和可維護性。
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();
雄辯的模型經常混合資料存取和商業邏輯,影響可維護性。 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>
DataForge 提供七個強大的 API 端點,為後端互動提供結構化、可擴展的方法:
範例:分頁產品清單:/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 開發,同時保持了靈活性和可擴充性。
傳統框架通常需要不同的方法來取得清單、單行或聚合資料。 DataForge 在 SQL 類別中的模組化選擇類型允許動態調整查詢以傳回所需的資料格式,而無需冗餘編碼。
將 DataForge 整合到 Laravel 專案中可以提供:
filterOptional
和 filterAnyOneRequired
等功能增強性能和安全性。 DataForge 是一個全面的後端工具包,旨在高效建構結構化、可擴展的產品。
我們鼓勵回饋和討論 DataForge 與您目前工具的比較。
讓我們合作重新定義後端開發。
以上是超越 MVC:使用 DataForge 重新定義後端開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!