Menu
Coddy logo textTech

Ключевое слово $this

Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 4 из 91.

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

Вот пример класса с методами, использующими $this:

<?php
class Car {
    public $color;
    public $model;

    public function honk() {
        echo "Beep beep!\n";
    }

    public function describe() {
        echo "I am a " . $this->color . " " . $this->model . "\n";
    }
}

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

Создайте объект автомобиля и установите свойства:

$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";

Теперь вызовите методы:

$myCar->honk();
$myCar->describe();

Вывод:

Beep beep!
I am a Red Sedan

Когда вы вызываете $myCar->describe(), PHP автоматически устанавливает $this указывающим на $myCar. Именно так метод узнает, к свойствам какого объекта обращаться.

Если бы у вас был другой объект автомобиля:

$otherCar = new Car();
$otherCar->color = "Blue";
$otherCar->model = "SUV";
$otherCar->describe(); // Я — Blue SUV

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

challenge icon

Задание

Легко

Завершите класс Car в файле car.php, добавив метод с именем displayInfo, который использует ключевое слово $this для вывода года, марки и модели автомобиля в формате:

"This car is a [year] [make] [model]"

  • car.php: Содержит определение класса Car, в которое вы добавите метод displayInfo
  • driver.php: Основной исполняемый файл, который импортирует и использует класс Car (заблокирован)

Шпаргалка

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

Использование $this в классе:

<?php
class Car {
    public $color;
    public $model;

    public function describe() {
        echo "I am a " . $this->color . " " . $this->model . "\n";
    }
}

Создание объекта и вызов методов:

$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";
$myCar->describe(); // Я — Red Sedan

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

Попробуйте сами

<?php
require_once 'car.php';

$myCar = new Car();
$myCar->year = 2020;
$myCar->make = "Toyota";
$myCar->model = "Corolla";

$myCar->displayInfo();
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование