Глупый вопрос, который я знаю,
Из всех уроков они не объясняют, почему они используют $ 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 доступна, когда метод вызывается из контекста объекта. … $ это в основном используется для ссылки на свойства класса