Что $ это на самом деле означает> Codeigniter - PullRequest
12 голосов
/ 24 августа 2011

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

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

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

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

Спасибо

Ответы [ 6 ]

19 голосов
/ 25 августа 2011

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

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

Еще один способ получить этот экземпляр в codeigniter - это функция get_instance(), которую вы используете при создании переносимых библиотек.

7 голосов
/ 24 августа 2011

$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;
6 голосов
/ 24 августа 2011

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

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

$something = new SomeClass();

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

class SomeClass {

  public $stuff = 'Some stuff';

  public function doStuff()
  {
    $this->stuff;
  }

}
4 голосов
/ 24 августа 2011

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

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

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

1 голос
/ 22 июня 2017

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

1 голос
/ 24 августа 2011

Я только что прочитал отличный пост об этом и занятиях в целом: http://query7.com/using-this-in-php

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...