模块之间的Codeigniter类继承(wiredesigns) -再次


Codeigniter Class Inheritance between modules (wiredesigns) - again

我之前问过这个问题:模块(wiredesigns)之间的Codeigniter类继承

我接受了这个问题的答案,它提供了一种通过在application/core中扩展自定义控制器来做我想做的事情的方法。这种方法似乎是明智的,并且提供了允许两个模块独立工作的额外好处。

然而,考虑到这一点,我不确定这是否是这种情况下的最佳方法,因为我的产品控制器几乎需要项目控制器的所有功能,所以这种方法将使我的项目控制器几乎是空的——我不确定我喜欢这个。

问题1

虽然我可能仍然采用先前建议的方法,但我想知道是否有一种方法可以在模块之间扩展类,以便我可以权衡这两个选项(参见下面的原始问题)

问题2

此外,我认为我应该能够重用我的大部分模型类,我可以看到我将能够使用MY_Model在app/core方法做到这一点。但是…

a)是否有直接访问其他模块模型的方法?

b)我是否可以在模块之间扩展我的模型,以类似的方式为控制器问题1

前一个问题

我的CI2应用程序正在使用wiredesigns模块化布局。

我在一个名为modules的文件夹中有两个名为item和product的模块,如下所示:

/application
    /modules
        /item
        /product

在Item中,我有一个名为Item的控制器,它的开头是这样的:

class Item extends MX_Controller
{
    //code here
}

我需要做些什么来使我的产品控制器扩展我的项目控制器在一个不同的模块

正确答案是:

你为什么要这么做?将您的逻辑放入库或某种共享文件中,并实现对该库的调用。

你可以把Item作为一个抽象类放在你的application/libraries文件夹中,HMVC内置的自动加载器会自动加载它。没有理由让它出现在模块中,也不需要是控制器