访问与局部变量同名的模型

时间:2011-09-04 17:12:54

标签: php codeigniter

我真的很困惑,因为我有以下情况:

Class Game extends CI_Model{
  $this->load->model('user');
  public $user = 'foo';

  $var = $this->user; // Model Or Local Variable?
}

我如何判断它应该使用哪一个,模型User或本地公共变量$user

2 个答案:

答案 0 :(得分:2)

$this->user$user

不同

您使用$this->load->model('user');加载的模型只能通过$this变量访问。此外,您应该只通过模型已经放入的变量范围来处理它(如果愿意的话,更有意义)。

本地方法变量,正如您尝试使用$var = $this->user;一样,只能通过方法访问。

因此,纠正您的代码,它看起来像这样:

Class Game extends CI_Model{

    public function get_player() {
      $this->load->model('user'); // Load the User model

      $user = 'foo'; // Variable with the string value 'foo'.

      $var = $this->user; 
      // $var is a copy of the model you loaded before
      // which means using:
      $name = $this->user->get_username();
      // is the same as
      $name = $var->get_username();

      retun $name;

    }
}

答案 1 :(得分:1)

简单快速的解决方案:


    If you would like your model assigned to a different object name you can specify it via the second parameter of the loading function:

    $this->load->model('Model_name', 'fubar');

    $this->fubar->function();