我先前问了这个问题:Codeigniter Class Inheritance between modules (wiredesigns)
我接受了这个问题的答案,它提供了一种通过扩展应用程序/核心中的自定义控制器来实现我想要的方法。这种方法似乎很合理,并且提供了允许两个模块独立运行的额外好处。
然而,考虑到这一点,我不确定这是解决这种情况的最佳方法,因为My Products控制器几乎需要物品控制器的所有功能,所以这种方法会让我的物品控制器几乎空了 - 我我不确定我喜欢这个。
问题1
虽然我可能仍然采用之前建议的方法,但我想知道是否有办法在模块之间扩展类,以便我可以权衡这两个选项(参见下面的原始问题)
问题2
另外,我认为我应该可以重复使用我的模型类的大部分内容,我可以看到我可以使用app / core方法中的MY_Model来实现这一点。但是......
a)有没有办法直接访问其他模块模型?
b)我能否以与控制器问题1类似的方式在模块之间扩展我的模型
以前的问题
我的CI2应用程序正在使用线路设计模块化布局。
我在一个名为modules的文件夹中有两个名为item和product的模块,如下所示:
/application
/modules
/item
/product
在项目中,我有一个名为item的控制器,就像这样开始。
class Item extends MX_Controller
{
//code here
}
我需要做什么才能让我的产品控制器在不同的模块中扩展我的项目控制器
答案 0 :(得分:1)
这里的正确答案是:
不要
你为什么要这样做?将您的逻辑放入库或某种共享文件中,然后实现对该库的调用。
您可以在Item
文件夹中设置application/libraries
一个抽象类,HMVC内置的自动加载器会自动加载它。没有理由需要在模块中,它绝对不需要是控制器。