В PHP ключевое слово $this ссылается на текущий объект класса. Ключевое слово $this позволяет получить доступ к свойствам и методам текущего объекта внутри класса с помощью оператора объекта (->):
$this->property
$this->method()
Ключевое слово $this доступно только внутри класса. Его не существует вне класса. Если вы попытаетесь использовать $this вне класса, вы получите сообщение об ошибке.
Когда Вы обращаетесь к свойству объекта с помощью ключевого слова $this, вы используете $ только с ключевым словом this. И вы не используете $ с именем свойства. Например:
$this->balance
Ниже показан класс BankAccount:
<?php
class BankAccount
{
public $accountNumber;
public $balance;
public function deposit($amount)
{
if ($amount > 0) {
$this->balance += $amount;
}
}
public function withdraw($amount)
{
if ($amount <= $this->balance) {
$this->balance -= $amount;
return true;
}
return false;
}
}
В этом примере мы получаем доступ к свойству balance с помощью ключевого слова $this внутри методов deposit() и takew().
Для начала создим новый объект BankAccount:
// create a new account object
$account = new BankAccount();
$account->accountNumber = 1;
$account->balance = 100;
Далее трижды вызовите метод deposit (), чтобы внести разные суммы денег:
$account->deposit(100);
$account->deposit(200);
$account->deposit(300);
Этот код довольно подробный. Было бы более кратко и выразительно, если бы вы могли написать эти утверждения, используя один оператор, подобный этому:
$account->deposit(100)
->deposit(200)
->deposit(300);
Этот способ называется объединением методов. Чтобы сформировать цепочку методов, метод deposit() должен вернуть объект BankAccount, который является $this внутри класса BankAccount следующим образом:
public function deposit($amount)
{
if ($amount > 0) {
$this->balance += $amount;
}
return $this;
}
Метод deposit () возвращает $this, который является текущим объектом класса BankAccount. Следовательно, вы можете вызвать любой общедоступный метод класса BankAccount.
В следующем примере сначала вызывается метод deposit(), а затем метод remove() в одной инструкции:
$account->deposit(100)
->withdraw(150);
Это эквивалентно следующему коду:
$account->deposit(100);
$account->withdraw(150);