Ключевое слово $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 всегда ссылается на конкретный объект, вызвавший метод. Каждый объект получает свой собственный контекст при выполнении метода.
Задание
ЛегкоЗавершите класс Car в файле car.php, добавив метод с именем displayInfo, который использует ключевое слово $this для вывода года, марки и модели автомобиля в формате:
"This car is a [year] [make] [model]"
car.php: Содержит определение классаCar, в которое вы добавите методdisplayInfodriver.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();
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово $thisМетодыСвойстваКонструктор (__construct)Деструктор (__destruct)Итоги — Простой калькулятор4Наследование
Основы наследованияКлючевое слово parent::Переопределение методовКлючевое слово finalАбстрактные классыИтоги — Иерархия сотрудников7Инкапсуляция
Public, Protected, PrivateПодробный разбор модификаторов доступаГеттеры и сеттерыСокрытие данныхConstructor Promotion (8.0)Итоги — Система учета студентов10Продвинутые концепции ООП
Композиция против наследованияВнедрение зависимостейАнонимные классыПеречисления (PHP 8.1)Файберы (PHP 8.1)Глубокое погружение в клонирование объектовГенераторы и итераторы13Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикПаттерн Репозиторий2Пространства имен и автозагрузка
Введение в пространства именКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerИтоги: структурированный проект5Интерфейсы и контракты
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовИнтерфейс против абстрактного классаType Hinting с интерфейсамиИтоги — Калькулятор фигур8Магические методы
Введение в магические методы__toString и __debugInfo__get, __set, __isset, __unset__call и __callStatic__clone и клонирование объектов__serialize и __unserializeИтоги — Кастомная коллекция11Система типов и обработка ошибок
Объявление типовNullable-типыТипы объединения и пересеченияКлассы исключенийИерархия пользовательских исключенийTry, Catch, FinallyИтоги — Валидатор форм14Проект: Управление библиотекой
Обзор проектаКлассы Book и User3Свойства классов
Свойства экземпляра и статические свойстваКонстанты в классахСтатические методы и свойстваПриватные и защищенные свойстваСвойства Readonly (PHP 8.1)Итоги — Менеджер банковского счета6Полиморфизм
Снова о переопределении методовПолиморфизм через интерфейсыType Hinting и Union TypesПозднее статическое связываниеИтоги — Payment Processor9Трейты
Введение в трейтыИспользование нескольких трейтовРазрешение конфликтов трейтовАбстрактные методы в трейтахТрейты и наследование12Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy