Что означает переменная $ в PHP? - PullRequest
91 голосов
/ 06 октября 2009

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

Может кто-нибудь сказать мне, как переменная $ это работает в PHP?

Ответы [ 9 ]

114 голосов
/ 06 октября 2009

Это ссылка на текущий объект, чаще всего она используется в объектно-ориентированном коде.

Пример:

<?php
class Person {
    public $name;

    function __construct( $name ) {
        $this->name = $name;
    }
};

$jack = new Person('Jack');
echo $jack->name;

Здесь хранится строка 'Jack' как свойство созданного объекта.

33 голосов
/ 11 декабря 2013

Лучший способ узнать о переменной $this в php - это спросить PHP, что это такое. Не спрашивайте нас, спросите компилятор:

print gettype($this);            //object
print get_object_vars($this);    //Array
print is_array($this);           //false
print is_object($this);          //true
print_r($this);                  //dump of the objects inside it
print count($this);              //true
print get_class($this);          //YourProject\YourFile\YourClass
print isset($this);              //true
print get_parent_class($this);   //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object
14 голосов
/ 24 февраля 2015

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

Пример:

Class A
{
   public $myname;    //this is a member variable of this class

function callme() {
    $myname = 'function variable';
    $this->myname = 'Member variable';
    echo $myname;                  //prints function variable
    echo $this->myname;              //prints member variable
   }
}

выход: * +1010 *

function variable

member variable
8 голосов
/ 06 октября 2009

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

Из PHP документов :

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

6 голосов
/ 19 июня 2016

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

<?php

class Student {
    public $name;

    function __construct( $name ) {
        $name = $name;
    }
};

$tom = new Student('Tom');
echo $tom->name;

?>

Это ничего, кроме

<?php

class Student {
    public $name;

    function __construct( $name ) {
        $this->name = $name; // Using 'this' to access the student's name
    }
};

$tom = new Student('Tom');
echo $tom->name;

?>

это повторяет 'Tom'

3 голосов
/ 29 октября 2015

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

3 голосов
/ 06 октября 2009

когда вы создаете класс, у вас есть (во многих случаях) переменные экземпляра и методы (или функции). $ this обращается к этим переменным экземпляра, чтобы ваши функции могли принимать эти переменные и делать то, что им нужно, делать с ними все, что вы хотите.

другая версия примера медера:

class Person {

    protected $name;  //can't be accessed from outside the class

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}
// this line creates an instance of the class Person setting "Jack" as $name.  
// __construct() gets executed when you declare it within the class.
$jack = new Person("Jack"); 

echo $jack->getName();

Output:

Jack
2 голосов
/ 26 марта 2016

$ это специальная переменная, которая относится к тому же объекту, т.е. сам по себе.

это фактически ссылка на экземпляр текущего класса

вот пример, который очистит приведенное выше утверждение

<?php
 class Books {
  /* Member variables */
  var $price;
  var $title;

  /* Member functions */
  function setPrice($par){
     $this->price = $par;
  }

  function getPrice(){
     echo $this->price ."<br/>";
  }

  function setTitle($par){
     $this->title = $par;
  }

  function getTitle(){
     echo $this->title ." <br/>";
  }
}
?> 
0 голосов
/ 06 октября 2009

Относится к экземпляру текущего класса, как сказал meder .

См. PHP Документы . Это объясняется в первом примере.

...