Что означает $ this на самом деле> Codeigniter

Глупый вопрос, который я знаю,

Из всех уроков они не объясняют, почему они используют $ this.

Является ли $ this как объект из базового класса в Codeigniter?

Любые объяснения будут приветствоваться! 🙂

благодаря

Чтобы на самом деле ответить на ваш вопрос, $this фактически представляет экземпляр Singleton Codeigniter (который фактически является объектом контроллера).

Например, когда вы загружаете библиотеки / модели, вы прикрепляете их к этому экземпляру, чтобы ссылаться на них как на свойство этого экземпляра.

Другой способ получить этот экземпляр в codeigniter – это get_instance() которую вы используете при создании переносных библиотек.

$this в PHP является текущим объектом. В определении класса вы используете $this для работы с текущим объектом. Возьмите этот класс в качестве примера:

 class Hello { public $data = 'hello'; function hi() { $this->data = 'hi'; } } 

Вы можете создать экземпляр этого класса несколько раз, но $data будет только изменен на hi в тех объектах, где вы вызвали функцию:

 $one = new Hello; $two = new Hello; $two->hi(); echo $one->data, "\n", $two->data; 

$this не что-то от CodeIgniter, а от PHP. $this относится к текущему объекту.

Всякий раз, когда вы создаете такой экземпляр:

 $something = new SomeClass(); 

Тогда $this ссылается на экземпляр, созданный из SomeClass , в данном случае $something . Всякий раз, когда вы находитесь в самом классе, вы можете использовать $this для ссылки на этот экземпляр. Так:

 class SomeClass { public $stuff = 'Some stuff'; public function doStuff() { $this->stuff; } } 

В терминах codeigniter:
Вы заметите, что каждый контроллер в codeigniter расширяет базовый класс контроллера. Использование $this в контроллере дает вам доступ ко всему, что определено в вашем контроллере, а также к тому, что унаследовано от базового контроллера.

Большая часть использования, которую вы получите из $this включает вызовы методов, которые загрузил базовый класс для вас – $this->load , $this->uri и т. Д.

Если я правильно помню, PHP-код в представлении запускается в контексте контроллера, поэтому у вас также будет доступ к объекту контроллера с $this from there.

Я просто прочитал отличный пост о $ this и classes в целом: http://query7.com/using-this-in-php

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

Это способ ссылки на экземпляр класса изнутри самого себя, как и многие другие объектно-ориентированные языки. Из документов PHP: псевдопеременная $ this доступна, когда метод вызывается из контекста объекта. … $ это в основном используется для ссылки на свойства класса