Я использую ключевое слово «this» в течение длительного времени. Но когда кто-то просит меня объяснить это, я смущен, что как объяснить это. Я знаю, что могу использовать это в методе класса для доступа к любой переменной и методу того же класса.
class MyClass{ function MyMethod1(){ echo "Hello World"; } function MyMethod2(){ $this->MyMethod1(); } }
Является ли это объектом класса, который нам не нужно инициализировать и его можно использовать только внутри класса или чего-то еще. Как объяснить?
благодаря
Класс – это форма для объекта: он указывает, как выглядит объект (переменные) и что он может делать (функции).
Если вы инициируете класс: вы создаете объект. Если вы создадите класс, вы можете использовать «this» для обозначения самого объекта. Вот почему вы не можете установить «это», потому что это связано с объектом. Это специальная переменная только для чтения.
this
ссылается на текущий экземпляр объекта класса.
this
неявный параметр, передаваемый методам класса: он привязан к методу и позволяет получить доступ ко всем членам объекта.
Как и их название, методы экземпляра работают на экземплярах класса. Откуда они знают, с кем работать? Вот для чего this
параметр.
Когда вы вызываете метод экземпляра, вы действительно невидимо передаете дополнительный параметр: объект для его вызова. Например, когда у вас есть это:
class Basket { public function a() { $this-> ...; // ... } // ... }
и вы вызываете $some_basket->a()
, за кулисами вы на самом деле называете что-то вроде Basket::a($some_basket)
. Теперь a()
знает, с какой Basket
вы хотите работать. Этот специальный параметр относится к этому: текущий объект, с которым вы имеете дело.
short: $this
дает вам доступ к объектным переменным (и методам). Редактирование: внутри класса 🙂 Редактировать 2: (но не в статических методах класса): D
Несколько человек объяснили это в аналогичных выражениях, но я подумал, что добавлю, что, разговаривая с людьми, незнакомыми с объектно-ориентированным программированием, я объясняю, что определение класса – это план, как для дома, и «это» – это реальный дом, который вы «В данный момент вы работаете. Там могут быть и другие дома, которые выглядят точно так же, но это конкретный объект (дом).
Класс – это шаблон или «смерть» для объекта.
Давайте используем классический пример «велосипеда». Там много толстых мотоциклов. Тем не менее, мы создали один велосипед, и мы можем использовать ключевое слово «this» для обозначения «этого» велосипеда.
В более техническом смысле класс является шаблоном для объекта, который будет создан. Во время выполнения, после того, как объект был создан или был создан сам экземпляр, мы можем затем использовать ключевое слово «this» внутри, чтобы ссылаться на экземпляр, который запускает этот метод.