【发布时间】:2013-12-02 10:10:03
【问题描述】:
如何在 Codeigniter 中将我的业务逻辑与我的控制器分开。我正在将 HMVC 与 Phills 模板库一起使用。这是我目前的设置。
//Application/core/MY_controller.php
class My_controller extends MX_controller
{
function __construct()
{
parent::__construct();
}
}
class dCommerce extends MY_controller
{
function __construct()
{
parent::__construct();
#Some of my code that shares the entire app, ex: login
}
}
现在在控制器中我想要这样的东西 //Application/controllers/sales_order.php
class Sales_order extends dCommerce extends dSales_Order
{
//dSales_Order have all my core APP logic
}
我知道 PHP 无法实现多重继承,但是如何将逻辑与控制器分离?
Sales_order 将包含我所有基于框架的逻辑(取决于应用程序)ex、验证和核心类 dSales_Order 将具有核心应用程序逻辑 ex。保存、创建等
一个样本应该是这样的......
class dSales_Order
{
function save( $sales_order_id , $details )
{
//blah blah codes and APP logic, too much of math
//and then save to DB, this class will be framework Independed
//only pure php code
}
}
我怎样才能做到这一点?
【问题讨论】:
-
也许我没有完全理解你。为什么要扩展一个从控制器处理业务逻辑的类?
-
主要原因是我想改变我的框架(但不是现在),控制器类将有框架依赖的代码,但我的核心类只有纯php代码。前任。在 2 个框架中,它们将有 2 种类型的验证类,但我的 APP 逻辑在核心类上仍然相同。它还提供了许多灵活性(至少在 CI 设置的情况下)例如。你不能在另一个控制器内部调用控制器,那么我如何从控制器外部调用控制器逻辑?
-
我过去常常将我的逻辑分离到库中,然后从您的控制器中调用它们以获得所需的功能。另一种似乎是模型规范的方法是将它们用于逻辑和数据库。然后只需将请求传递给模型或库的灯光控制器。无论哪种方式,它都将它们与逻辑分开!
-
@micb 从技术上讲它可以工作......但我需要它们来自库。仅仅因为核心类与框架无关(例如 Codeigniter),事实上我可以通过在页面顶部添加一行代码
include("dSales_Order")来做到这一点。但它不是 CI 做事的方式 :( -
为什么不构建一个名为 dsales_Order 的“模型”类来处理您的应用程序逻辑(保存、创建等)。然后在控制器 (Sales_Order) 中创建它的一个实例。
标签: php codeigniter hmvc