2014-05-17 46 views
0

我已經通過路由器類,並沒有找到控制器類加載的位置。添加後綴到控制器類在Codeigniter

我發現的是,通常控制器類名稱與模型具有相同的名稱,例如我可能有一個稱爲用戶的控制器以及稱爲用戶的模型,其中控制器具有內置的基本克勞德函數它。

問題是,如果我在用戶控制器內調用用戶模型,我不能重新聲明該類。

我建議的是讓控制器名稱爲User_Controller,以免重新聲明用戶模型。

有沒有人有任何想法如何實現這個或更好的解決方案?

回答

1

我不明白你的問題,也許你正在尋找「命名」的慣例或使用load model第二個參數。請看下面的例子。

控制器

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class User extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
     $this->load->model('user_model', 'user'); 
    } 

    public function index() { 
     $this->user->get(); //calls user_model method get(); 
    } 

} 

/* End of file user.php */ 
/* Location: ./application/controllers/user.php */ 

模式

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class User_model extends CI_Model { 

    function get() { 
     return 1; //all database calls etc.. 
    } 

    function complexFunction() { 
     $this->get(); //calls User_model get() 
     return 1; 
    } 

} 

/* End of file user_model.php */ 
/* Location: ./application/models/user_model.php */ 
+0

如果你是在所有熟悉的法師例如..所有控制器都遵循這個命名約定namespace_module_controller_path_to_file。這使得非常不可能有兩個同名的類。我想要做的是,當以上述方式加載模型時,假定路徑相同,但實例化後綴爲_controller的類名稱。 – ajameswolf