2012-12-22 57 views
2

我以前問過這個問題:Codeigniter Class Inheritance between modules (wiredesigns)模塊(wiredesigns)之間笨類繼承 - 再

我接受了這個問題的答案,其提供的應用程序/核心延伸出來的一個自定義的控制做我想要的東西的一種方式。這種方法看起來很明智,並且提供了允許兩個模塊獨立工作的額外好處。

但是,考慮到這一點,我不確定這是否是這種情況的最佳方法,因爲我的產品控制器將需要物品控制器的幾乎所有功能,所以這種方法會使我的物品控制器幾乎爲空 - 我我不確定我喜歡這個。

問題1

雖然我可能仍然與以前提出的辦法去,我想知道如果有模塊之間的擴展類,這樣我可以權衡了兩種選擇方式(見原下面的問題)

問題2

此外,我想我應該可以再利用很多我的模型類的,我可以看到,我能做到這一點使用MY_Model在app /核心方法。但是...

a)有沒有辦法直接訪問其他模塊模型?

B)我能以類似的方式模塊之間致以車型質疑1控制器

前面的問題

我CI2應用程序使用wiredesigns模塊化佈局。

我有兩個模塊調用項目和產品在一個文件夾,名爲模塊,像這樣:

/application 
    /modules 
     /item 
     /product 

在項目我有開始這樣的控制器稱爲項目。

class Item extends MX_Controller 
{ 
    //code here 
} 

什麼我需要做的,使我的產品控制器不同的模塊

+0

所以,你說你想做類似於'Item Item extends Item_base'的地方,其中'Item_base'是另一個模塊中的另一個控制器,對吧? – Alex

+0

我想要Class產品擴展項目,其中項目和產品是不同模塊中的控制器。項目可以自己使用,產品需求項目。讓他們在不同的模塊中的一點是,他們可以同時用於不同的事情 – WebweaverD

+0

o_O這就是我所說的 – Alex

回答

1

正確的答案致以項目控制器:

不要

你爲什麼要這麼做?將您的邏輯放入庫或某種共享文件中,然後實現對該庫的調用。

您可以在application/libraries文件夾中創建Item抽象類,並且內置於HMVC的自動裝載器將自動加載它。沒有理由需要在模塊中,而且它絕對不需要成爲控制器。

+0

我曾經被告知我所問的如何做是一個糟糕的主意(並指出您的博客文章DRY CI開發),我已經沿着擴展MX_Controller的路線,然後將其擴展到我的項目和產品控制器,上次我提出這個問題時建議。你是說這是一個糟糕的做法嗎?爲什麼? – WebweaverD

+0

如果您正在製作基本控制器,它們會進入應用程序文件夾,因爲它們是應用程序範圍的依賴項。如果您將它們放入模塊中,那麼您必須每次列出包含的列表,或者強制自動加載器拖過任何模塊,直到碰巧找到它爲止。如果您正在查看我的DRY文章,請遵循其示例 - 並且不要將基礎控制器放入模塊中。 –

+0

我已經把它放在application/core中。這很酷呀? – WebweaverD