Какова цель "Получить экземпляр" в Codeigniter? Как бы вы объяснили это новичку?
Codeigniter: Получить экземпляр
Ответ 1
Итак, все в CodeIgniter проходит через супермагическую переменную $this
. Это работает только для классов, поскольку $this
в основном определяет текущий класс.
Ваш контроллер - это класс, поэтому $это есть, что позволяет вам делать $this->load->model('whatever');
В моделях вы также используете класс. Здесь он немного отличается, поскольку $this
содержит только полезный материал, поскольку вы расширяетесь от модели. Тем не менее, $this
остается в силе.
Когда вы используете помощник или библиотеку, вам нужно найти эквивалент "экземпляр" или $this
.
$ci =& get_instance();
... заставляет $ci
содержать тот же самый материал/код/полезность как $this
, даже если вы не в классе, или нет в классе, который наследует его.
Это объяснение для всех начинающих после 2 пинтов, так что это либо неправильно, либо правильно.; -)
Ответ 2
Это реализация singleton pattern. По сути, есть только один экземпляр рассматриваемого класса, который предназначен для доступности во всем мире. Метод get_instance
является статическим и, таким образом, обеспечивает способ доступа к экземпляру из любого места вашего кода.