На очень простом английском:
Оказавшись внутри функции объекта, вы получаете полный доступ к его переменным, но для их установки вам нужно быть более конкретным, чем просто использовать имя переменной, с которой вы хотите работать.Чтобы правильно указать, что вы хотите работать с локальной переменной, вам нужно использовать специальную переменную $this
, которую PHP всегда устанавливает для указания на объект, с которым вы сейчас работаете.
Например:
function bark()
{
print "{$this->Name} says Woof!\n";
}
Когда вы находитесь внутри функции объекта, PHP автоматически устанавливает переменную $this
, содержащую этот объект.Вам не нужно ничего делать, чтобы иметь к нему доступ.
На обычном английском языке:
$this
- это псевдопеременная, которая доступна, когда метод вызывается изнутри.контекст объекта.Это ссылка на вызывающий объект (обычно это объект, к которому относится метод, но, возможно, другой объект, если метод вызывается статически из контекста вторичного объекта)
Пример:
<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}
class B
{
function bar()
{
// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
}
}
$a = new A();
$a->foo();
// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
$b = new B();
$b->bar();
// Note: the next line will issue a warning if E_STRICT is enabled.
B::bar();
?>
Выход:
$this is defined (A)
$this is not defined.
$this is defined (B)
$this is not defined.