为什么我不能将变量传递给Codeigniter中的Model构造函数?

时间:2011-11-09 17:49:53

标签: php oop codeigniter codeigniter-2

似乎无法将变量传递给Code Igniter中的Model的Constructor。也许我在MVC或Code Igniter中遗漏了一些东西,但我不明白。

在我的情况下,我应该使用librairies而不是Model吗? (图书馆实际上接受参数)

实际上我的代码看起来像这样,我认为这有点奇怪:

控制器:

class User extends CI_Controller {
    public function user($user_id) {
        $this->load->model('user');
        $this->user->setId($user_id);

        $data['username'] = $this->user->getName();     
        // Isn't it a bit strange ? I can load the class User even if the User doesn't mean anything ?
    }
}

型号:

class User extends CI_Model {
    private $id;
    private $name;

    public function setId($id) {
        $this->id = $id;
        // Retrieve data from DB...
        $this->name = $retrieved_data['name'];
    }

    public function getName() {
        return $this->name;
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

控制器:

class User extends CI_Controller {

    public function user($user_id) {
        $this->load->model('user_model');

        $data['username'] = $this->user_model->getName($user_id);     
    }
}

型号:

class User_model extends CI_Model {

    public function getName($user_id) {
        //Retrieve data from DB using the $user_id variable...
        return $retrieved_data['name'];
    }
}

似乎是一种更合理,更快捷的方式。不确定它是否符合您的其余代码,但它可能有助于您追踪错误。