Я пытаюсь понять, как $this->load->view() работает внутри файла вида в CodeIgniter. 
  Ядро / Controller.php вызывает core / Loader.php, который затем вызывает _ci_load (), который, в свою очередь, include('/path/to/view'); 
  Не стоит ли $this ссылаться на класс Loader в этот момент?  Как это $this ссылается на контроллер? 
  По моему мнению, вам нужно будет вызвать $ this-> view () внутри файла вида.  Не $ this-> load-> view (), потому что функция load () недоступна внутри загрузчика.  Это переменная класса базового класса Controller.  т.е. $this->load =& load_class('Loader'); 
Обратите внимание: я пытаюсь понять внутренности CodeIgniter. Я прекрасно знаю, как встраивать файлы просмотра в другие файлы представлений в качестве пользователя CodeIgniter. Пожалуйста, не оставляйте ответы, объясняющие, как использовать $ this-> load ().
  В прошлый раз, когда я проверил, $this был класс CI_Loader , попробуйте var_dump($this);  внутри вида. 
Проверять, выписываться:
https://github.com/EllisLab/CodeIgniter/blob/develop/system/core/Controller.php
 is_loaded();  возвращает массив с уже загруженными именами классов и их псевдонимами из основного контейнера. 
  $this->load – это экземпляр CI_Loader внутри контроллера. 
Проверьте:
https://github.com/EllisLab/CodeIgniter/blob/develop/system/core/Loader.php
Линия 778
  Чтобы упростить понимание того, что $this означает в представлении, поскольку представление «загружено» с помощью метода контроллера, представление все еще выполняется в той же области, что и этот метод, что означает, что $this может иметь другой контекст, в зависимости от того, класс загрузил его. 
Например:
 class Controller1 extends CI_Controller {} 
  В любом файле просмотра, загруженном в этот примерный контроллер, $this относится конкретно к классу Controller1 , который также может иметь доступ CI_Controller общедоступным и защищенным свойствам / методам CI_Controller (например, классы Loader или Input, которые назначаются свойствам load и input CI_Controller ), поскольку он расширяет этот класс. 
Контроллеры по-прежнему являются просто старыми классами PHP. Если бы я сделал это:
 class Controller1 extends CI_Controller { $this->foobar = 'Hello'; } class Controller2 extends CI_Controller { $this->foobar = 'World'; } 
  … если мы загрузим один и тот же файл вида в любом методе любого из этих контроллеров, используя $this->foobar в этом файле просмотра будет возвращено другое значение.