2011-12-13 53 views
-1

我的代碼遠離DRY,它需要重構,但暫時我需要將其拆分爲文件 - 我有一個300行控制器方法,可以在調用時執行大量的api工作,而我只是想將一些代碼放到另一個文件中,這樣我就可以更好地閱讀它,而無需重新編寫它。將大型控制器方法拆分爲文件

if($type == "like"){ 

    $this->load->helper('posts/likes'); 

}else{ 

    $this->load->helper('posts/pic'); 

} 

我嘗試了上面的方法,但它像一個正常的處理它(你會相信它) -

基本上我想將代碼複製並粘貼到另一個文件小幅它清理乾淨,但新文件應該只是當前方法的擴展。我不用什麼來使用PHP函數(require_once或類似)..可以不這樣做?

澄清

我有一個非常大的控制器和方法 - 代替具有在一個方法400行的代碼我想它在兩個文件中分割,並讓代碼駐留在那裏。如果條件通過一個文件將加載到控制器而不是另一個 -

回答我的問題如何通過發佈有關DRY類方法加載文件沒有幫助我的情況 - 代碼應該清理 - 重構和分類到庫,我知道這一點,但我需要一個臨時修復

我的回答

此修復程序是在代碼疙瘩到控制器目錄我的帖子控制器我把兩個文件中的職位子文件夾的子文件夾然後使用require_once-哪些工作,但我認爲ci可能有太多的東西來加載代碼塊。

+0

你能澄清你的問題嗎?我不確定你想要做什麼? – Catfish

+0

只是爲了澄清,我沒有得到反對票:P – ajreal

+0

如果你想要你可以把上面的代碼寫成一個簡單的代碼:'$ this-> load-> helper(「posts /」。(($ type ==「 like「)」「likes」:「pic」));':) – uzsolt

回答

0

一般規則是保持控制器苗條。
乾燥是你需要認真對待並獲取它的東西。

我一般會準備控制器調用一個模型的方法,
該模型方法做準備,並在正確的格式所需的所有數據返回到控制器的方法

這樣,就可以避免結果的循環in controller

$result = $this->some_source->get_comments($limit=30); 
// I don't do loop in controller 
$this->load->view("display", $result); 

class some_source extends xxx 
{ 
    function get_comments(...) 
    { 
    // get results 
    // loop 
    // do necessary massage/format 
    // and return 
    } 
} 
+0

這個問題是關於使用單獨的文件中的PHP-不是關於DRY代碼 –

+0

如果你不幹,你必須分裂! – ajreal

+0

你可能會發現我廢話,如果不適合你的口味,就跳過這個。 – ajreal