Доступ к модели с тем же именем, что и у локальной переменной - PullRequest
1 голос
/ 04 сентября 2011

Я действительно запутался, потому что у меня есть следующий случай:

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

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

Как я могу сказать, какой из них следует использовать, модель User или локальную общедоступную переменную $user?

Ответы [ 2 ]

2 голосов
/ 04 сентября 2011

$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 голос
/ 04 сентября 2011

Простое и быстрое решение:


    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();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...