后端开发通常依赖于 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中文网其他相关文章!