Codeigniter: получить экземпляр - PullRequest
23 голосов
/ 12 мая 2010

Какова цель «Получить экземпляр» в Codeigniter? Как бы вы объяснили это новичку?

Ответы [ 2 ]

58 голосов
/ 12 мая 2010

Хорошо, поэтому все в CodeIgniter проходит через супермагическую переменную $this. Это работает только для классов, так как $this в основном определяет текущий класс.

Ваш контроллер является классом, так что $ это здесь, что позволяет вам сделать $this->load->model('whatever');

В моделях вы также используете класс. Здесь он немного отличается, так как $this содержит только полезные вещи, которые вы расширяете от Model. Тем не менее, $this все еще действует.

Когда вы используете помощника или библиотеку, вам нужно найти этот «экземпляр» или $this эквивалент.

$ci =& get_instance();

… заставляет $ci содержать точно такой же материал / код / ​​полезность, что и $this, даже если вы не в классе или не в классе, который его наследует.

Это объяснение для начинающих после 2-х пинт, так что это либо неправильно, либо примерно правильно. ; -)

11 голосов
/ 12 мая 2010

Это реализация шаблона singleton . По сути, существует только один экземпляр рассматриваемого класса, который предназначен для общего доступа. Метод get_instance является статическим и предоставляет способ доступа к экземпляру из любой точки вашего кода.

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