2011-12-05 67 views
6

在傳統的面向對象,我會(或可能,而)創建反映該模型/對象,它表示一個User,具有特性,即nameidjob title如何在Codeigniter中實例化同一對象的多個實例?

我可以然後創建的新實例該對象,並將其分配給一個變量,如果我循環通過結果集,我可以爲每個創建一個實例。使用CodeIgniter,這似乎是不可能的,因爲這樣做:

$this->load->model('User'); 

實例化它,並把它用在$this->user

難道沒有辦法以更傳統的方式使用模型作爲對象嗎?但是沒有破壞CI的做事方式嗎?

我知道您可以使用$this->load->model('User', 'fubar')將事物分配給不同的對象名稱,但它不像將實例指定給變量那樣動態。

任何有關此事的洞察力是非常感謝的傢伙。

編輯:謝謝你的答案傢伙,我想我錯過了工作「Codigniter之路」的重要組成部分,但我只是一直在尋找通過貢獻庫,並使用同一個實例的做法(分配給codeigniter命名空間),但在每次使用後清除實例變量,似乎是一種很好的工作方式,可以消除我的保留。

再次感謝您的幫助和答案。

回答

5

您不必使用load()函數。您可以像平常一樣使用require_oncenew User()

使用load()應該只用於全局CI名稱空間中您想要的內容。正如您所看到的,如果您嘗試將其用於一切,它會很快被污染。

+0

謝謝,我想我知道我仍然可以這樣做,但想知道是否有某件事我可以做以避免使用require (),並仍然使用CI的加載。即我可以這樣做:'$ this-> load-> model('User');'然後用'$ var = new $ this-> user'拷貝? –

+0

或者新的實例,而是。 –

+0

丹尼爾:看到這篇文章的第一項:http://net.tutsplus.com/tutorials/php/6-codeigniter-hacks-for-the-masters/ –

0

您仍然可以像在平時一樣在codeigniter中實例化對象。

$user1 = new Users(); // Instantiate 
$user2 = new Users(); 

$user1->property;  // Using it 
$user2->method() 

unset($user1);  // Unset it when done for good practice. 
-1
// User_model.php 

public function get_users() { 
    $query = $this->db->get('mytable'); 
    return $query->result(); 
} 

// User_controller.php 
public function show_users() { 
    $data['users'] = $this->User_model->get_users(); 
    $this->load->view('show_users', $data); 
} 

// show_users.php (view file) 
$x = 0; 
foreach ($users as $user) { 
    $x = $user; 
    $x++; 
} 
+1

是這就是我認爲,與這個問題沒有關係。 – Anil

0

是的,有什麼JustAnil和minboost說的都是正確的,但是,對於大多數的CI開發人員編寫代碼的標準做法是使用下面的語法

$this->mymodel->mymethod(); 

您是否發現一個特定的問題或問題,當你試圖寫這樣的?或者它與你習慣寫作的風格不同?請詳細說明一個用例,其中「它不像將實例簡單賦值給一個變量」:)

相關問題