Php 扩展codeigniter控制器和独立的业务逻辑
如何在Codeigniter中将业务逻辑与控制器分离。我正在使用带有Phills模板库的HMVC。这是我目前的设置 //Application/core/MY_controller.phpPhp 扩展codeigniter控制器和独立的业务逻辑,php,codeigniter,hmvc,Php,Codeigniter,Hmvc,如何在Codeigniter中将业务逻辑与控制器分离。我正在使用带有Phills模板库的HMVC。这是我目前的设置 //Application/core/MY_controller.php class My_controller extends MX_controller { function __construct() { parent::__construct(); } } class dCommerce extends MY_controller { funct
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
}
}
现在在控制器中,我想要这样的东西
//应用程序/controllers/sales_order.php
class Sales_order extends dCommerce extends dSales_Order
{
//dSales_Order have all my core APP logic
}
我知道PHP不可能实现多重继承,但是如何将逻辑与控制器分离呢
Sales\u order
将包含所有基于框架的逻辑(取决于应用程序),例如验证,核心类dSales\u order
将包含核心应用程序逻辑,例如保存、创建等
样品是这样的
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
}
}
我怎样才能做到这一点呢?我很抱歉我的英语不好 我希望你的疑惑是与OOPS和PHP有关的。我不能理解你的全部要求
即使我建议你使用新的PHP概念,即PHP中的or,我也很抱歉我的英语不好 我希望你的疑惑是与OOPS和PHP有关的。我不能理解你的全部要求
即使我建议您使用新的PHP概念,即PHP中的或,好的,我想我理解您现在的处境;在交换了一些意见之后 以下是我认为你应该做的:
- 建立对象列表(即销售、客户、员工等)李>
- 在核心PHP中编写所有这些对象李>
- 然后,将框架模型用作控制器和对象之间的附加层李>
- 可以将对象文件移动到所需的任何框架
- 您甚至可以通过RESTAPI一次访问多个框架李>
希望这能有所帮助。好吧,我想我明白你现在的处境;在交换了一些意见之后 以下是我认为你应该做的:
- 建立对象列表(即销售、客户、员工等)李>
- 在核心PHP中编写所有这些对象李>
- 然后,将框架模型用作控制器和对象之间的附加层李>
- 可以将对象文件移动到所需的任何框架
- 您甚至可以通过RESTAPI一次访问多个框架李>
希望这能有所帮助。也许我没有完全理解你。为什么要扩展一个从控制器处理业务逻辑的类?主要原因是我想更改我的框架(但不是现在),控制器类将有框架依赖的代码,但我的核心类将只有纯php代码。例如,在2个框架中,它们将有2种类型的验证类,但我的应用程序逻辑在核心类上仍然相同。此外,它还提供了许多灵活性(至少在CI设置的情况下是这样)。例如,您不能在另一个控制器内调用控制器,那么我如何从控制器外调用控制器逻辑?我过去常常将我的逻辑分离到库中,然后从您的控制器中调用它们以获得所需的功能。另一种似乎是模型规范的方法是将它们用于逻辑和数据库。然后,只需使用灯光控制器将请求传递给模型或库。无论哪种方式,它都将它们与逻辑分离@从技术上讲,它是有效的。。。但我需要他们离开图书馆。仅仅因为核心类与框架无关(例如Codeigniter),实际上,从技术上讲,我可以通过在页面顶部添加一行代码
include(“dSales\u Order”)
来实现这一点。但这不是CI的工作方式:(为什么不构建一个名为dsales\u Order的“Model”类来处理应用程序逻辑(保存、创建等),然后在控制器内创建一个实例(Sales\u Order)。可能我没有完全理解您。为什么要扩展一个从控制器处理业务逻辑的类?主要原因是我想更改我的框架(但不是现在),控制器类将有依赖于框架的代码,但我的核心类将只有纯php代码。例如,在两个框架中,它们将有两种类型的验证类,但我的应用程序逻辑在核心类上仍然相同。此外,它还提供了许多灵活性(至少在CI设置的情况下)例如,您不能在另一个控制器内调用控制器,那么我如何从控制器外调用控制器逻辑?我过去常常将我的逻辑分离到库中,然后从您的控制器中调用它们以获得所需的功能。另一种似乎是模型规范的方法是将它们用于逻辑和数据库。然后使用light控制器将请求传递给模型或库。无论哪种方式,它都会将它们与逻辑分离!@micb技术上是可行的……但我需要它们脱离libs。仅仅因为核心类与框架无关(例如Codeigniter),实际上技术上我可以通过添加一行代码include来实现这一点(“dSales_Order”)
位于页面顶部。但这不是CI的工作方式:(为什么不构建一个名为dSales_Order的“Model”类来处理应用程序逻辑(保存、创建等)。然后在控制器内创建它的实例(Sales_Order)。是的。这就是我需要的,我正在询问最好的方法。我通常不喜欢CI控制器中的包括。此外,我认为扩展CI数据库类并不容易:(更改核心文件夹是错误的,不建议这样做。)是的。这是我需要的,我正在询问最好的方法。我通常不喜欢CI控制器中的包括。此外,我认为扩展CI数据库类并不容易:(更改核心文件夹是错误的,不建议这样做