Что означает переменная $this в PHP?
Я вижу переменную $this
в PHP все время, и я понятия не имею, для чего она используется. Я никогда не использовал его лично, а поисковые системы игнорировали $
, и я в итоге нашел слово "this".
Может ли кто-нибудь сказать мне, как переменная $работает в PHP?
Ответы
Ответ 1
Это ссылка на текущий объект, наиболее часто используемый в объектно-ориентированном коде.
Пример:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
Сохраняет строку "Джек" как свойство созданного объекта.
Ответ 2
Лучший способ узнать о переменной $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
Ответ 3
Я знаю его старый вопрос, во всяком случае другое точное объяснение о $this. $this используется главным образом для ссылки на свойства класса.
Пример:
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
Ответ 4
Это способ ссылаться на экземпляр класса изнутри самого себя, так же как и на многие другие объектно-ориентированные языки.
Из Документы PHP:
Псевдопеременная $this доступна когда метод вызывается изнутри контекст объекта. $это ссылка к вызывающему объекту (обычно объект, к которому принадлежит метод, но, возможно, другой объект, если метод называется статически из контекст вторичного объекта).
Ответ 5
Давайте посмотрим, что произойдет, если мы не будем использовать $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 name
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
это повторяет "Том"
Ответ 6
когда вы создаете класс, который у вас есть (во многих случаях) переменные экземпляра и методы (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
Ответ 7
$это специальная переменная, и она относится к одному и тому же объекту, т.е. сам по себе.
он действительно ссылается на экземпляр текущего класса
вот пример, который очистит приведенный выше оператор
<?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/>";
}
}
?>
Ответ 8
$this
ссылка на вызывающий объект (обычно объект, к которому принадлежит этот метод, но возможно другой объект, если метод называется статически из контекста вторичного объекта).
Ответ 9
Он относится к экземпляру текущего класса, как сказано в медике.
См. Документы PHP. Это объясняется в первом примере.