Глупый вопрос, который я знаю,
Из всех учебных пособий они не объясняют, почему они используют $this.
Является ли $this как объект из базового класса в Codeigniter?
Любые объяснения будут приветствоваться!:)
Спасибо
Глупый вопрос, который я знаю,
Из всех учебных пособий они не объясняют, почему они используют $this.
Является ли $this как объект из базового класса в Codeigniter?
Любые объяснения будут приветствоваться!:)
Спасибо
На самом деле answer ваш вопрос $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
.
Я просто прочитал отличный пост о $this и classes в целом: http://query7.com/using-this-in-php
В PHP ключевое слово "$ this" используется как самостоятельная ссылка класса и вы можете использовать его для вызова и использования этих свойств и методов в качестве показанном в примере ниже.
Это способ ссылаться на экземпляр класса изнутри самого себя, так же как и на многие другие объектно-ориентированные языки. Из документов PHP: псевдопеременная $this доступна, когда метод вызывается из контекста объекта.... $это в основном используется для ссылки на свойства класса