Что означает $ this - PullRequest
       1

Что означает $ this

2 голосов
/ 13 сентября 2010

Я видел, что некоторые сценарии содержат $this в PHP-сценарии с ООП, я никогда не знал его значения ... как

$this->refresh();

Возможно, объясните мне, что означает $thisбыть ...?

Но я знаю, что вы не можете использовать его в качестве динамической переменной, такой как $this_is_a_variable, но почему нельзя использовать ее в качестве динамической переменной?

Ответы [ 4 ]

19 голосов
/ 13 сентября 2010

$this является ссылкой на текущий объект.

Может использоваться только в методах класса.

С руководство:

Псевдопеременная $ this доступна, когда метод вызывается из контекста объекта. $ это ссылка на вызывающий объект (обычно это объект, к которому принадлежит метод, но, возможно, другой объект, если метод вызывается статически из контекста вторичного объекта).

простой пример из реального мира:

class Classname
{
  private $message = "The big brown fox... jumped....";

  function setMessage($givenMessage) {
    $this->message = $givenMessage;
  }

  function getMessage() {
    return $this->message;  // Will output whatever value 
                            // the object's message variable was set to
  }
}

$my_object = new Classname();  // this is a valid object
echo $my_object->getMessage();  // Will output "The big brown fox... jumped...."

$my_object->setMessage("Hello World!");
echo $my_object->getMessage();  // Will output "Hello world"

$this является недоступным доступным при вызове метода в статическом контексте:

Classname::showMessage(); // Will throw an error: 
                          // `$this` used while not in object context
4 голосов
/ 13 сентября 2010

Если вы делаете ООП, то вы используете классы.Вы можете иметь:

class CFoo
  {
  private $var;
  public function setFoo($fooVal)
    {
    $this->var = $fooVal;
    }
  }

$ это относится к текущему объекту этого класса.

3 голосов
/ 13 сентября 2010

При создании классов в PHP иногда может потребоваться ссылка на сам класс *. Переменная $this зарезервирована для этой цели.

** Это должно быть правильно, поскольку «ссылается на созданный объект», а не на класс. Это семантически более правильно. *

Например:

class Car
{
    private $make;

    public function setMake($make)
    {
         $this->make = $make;
    }

    public function setModel($model)
    {
         $this->model = $model;
    }

    public function whatCar()
    {
        return "This car is a " . $this->make . " " . $this->model;
    }
}

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

$car = new Car();

$car->setMake('Ford');
$car->setModel('Escort');

echo $car->whatCar();
//This car is a Ford Escort
0 голосов
/ 13 сентября 2010

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

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