2009-11-18 8 views
0

工作在我笨項目中,我有這個函數應該是實例級還是類級? ...以及如何使其在笨

<?php 
class User_model extends Model { 
    function user_model() 
    { 
     parent::Model(); 
    } 

    // should we use instance method? 
    function get_total_users_count(){ 
     $results = $this->db->query("SELECT * FROM bhr_users GROUP BY userid"); 
     if($results){ 
      return $results->num_rows(); 
     } 
     return 0; 
    } 

    // or class method? 
    public static function get_total_users_count(){ 
     $obj =& get_instance(); 
     $results = $obj->db->query("SELECT * FROM bhr_users GROUP BY userid"); 
     if($results){ 
      return $results->num_rows(); 
     } 
     return 0; 
    } 
} 
?> 

我覺得這應該是一個一流水平的方法,因爲它在多個用戶進行操作。你同意嗎? get_instance是在codeigniter中做到這一點的正確方法嗎?

回答

1

老實說,我不認爲這有一個正確的方法。我會說實例方法是最常用的方法,但這並不是說它是對還是錯。

CodeIgniter和其他一些框架之間的一個很大的區別是模型可以是任何你想要的。根據CI手冊「The Model代表你的數據結構」。它表示模型將「典型地」與您的數據庫進行交互。

我喜歡CodeIgniter用於模型的鬆散定義,因爲它允許我創建處理任何數據集的模型。想使用RSS源作爲數據源?你可以使用一個模型。想要從Web服務中獲取數據?你可以使用一個模型。你可以自由地定義你如何使用模型。

我會說最重要的是一致性。選擇一種方法並在整個項目中一致地使用它。如果您正在與項目中的其他開發人員合作,則最好使用實例方法。這樣,當他們將您網站上的工作代碼與CodeIgniter文檔進行比較時,他們不會對發生的事情感到困惑。當然,這取決於你使用的開發人員的技能水平。

0

您應該使用

​​

除非你得到另一個類的實例,你應該做這種方式。

+1

您的建議將需要使該方法非靜態。 – 2009-11-18 03:48:53

1

要直接回答您的問題 - get_instance()函數調用是您在靜態函數中執行您嘗試執行的操作的正確方法。

相關問題