Я вижу переменную $this
в PHP все время, и я понятия не имею, для чего она используется. Я никогда не использовал его лично, а поисковые системы игнорируют $
и я в конечном итоге ищу слово «это».
Может ли кто-нибудь сказать мне, как переменная $ работает в PHP?
Это ссылка на текущий объект, который чаще всего используется в объектно-ориентированном коде.
Пример:
<?php class Person { public $name; function __construct( $name ) { $this->name = $name; } }; $jack = new Person('Jack'); echo $jack->name;
Это сохраняет строку «Джек» как свойство созданного объекта.
Лучший способ узнать $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
Я знаю его старый вопрос, во всяком случае другое точное объяснение об этом . $ это в основном используется для ссылки на свойства класса.
Пример:
Class A { $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 } }
вывод:
function variable member variable
Это способ ссылки на экземпляр класса изнутри самого себя, как и многие другие объектно-ориентированные языки.
Из документов PHP :
Псевдопеременная $ this доступна, когда метод вызывается из контекста объекта. $ это ссылка на вызывающий объект (обычно объект, к которому принадлежит этот метод, но, возможно, другой объект, если метод вызван статически из контекста вторичного объекта).
Давайте посмотрим, что произойдет, если мы не будем использовать $ 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; ?>
это повторяет «Том»
когда вы создаете класс, у вас есть (во многих случаях) переменные экземпляра и методы (aka. functions). $, это позволяет получить эти переменные экземпляра, чтобы ваши функции могли принимать эти переменные и делать то, что им нужно, делать с ними все, что вы хотите.
другая версия примера медитера:
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
$ это специальная переменная, и она относится к одному и тому же объекту, т.е. сам.
он фактически ссылается на экземпляр текущего класса
вот пример, который очистит приведенное выше утверждение
<?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/>"; } } ?>
$this
ссылка на вызывающий объект (обычно объект, к которому принадлежит этот метод, но, возможно, другой объект, если метод вызван статически из контекста вторичного объекта).
Это относится к экземпляру текущего класса, как сказал медикер .
См. Документы PHP . Это объясняется в первом примере.