2010-01-19 3 views
5

Я использую ключевое слово 'this' в течение длительного времени. Но когда кто-то просит меня объяснить это, я смущен, что как объяснить это. Я знаю, что могу использовать это в методе класса для доступа к любой переменной и методу того же класса.Как объяснить «это» ключевое слово наилучшим и простым способом?

class MyClass{ 

     function MyMethod1(){ 
     echo "Hello World"; 
     } 

     function MyMethod2(){ 
     $this->MyMethod1(); 
     } 

    } 

ли это объект класса, который мы не должны инициализироваться и могут быть использованы только в классе или что-нибудь еще. Как объяснить?

Благодаря

+1

В течение некоторого разумного времени принимается ответ большинством голосов. – NAVEED

+0

Вот хорошая статья об этом ** [Использование ключевого слова «this» в PHP] (http://www.webdevelopmentbits.com/using-this-in-php) ** – rahul

ответ

13

Класс представляет собой форму для объекта: он указывает, как объект выглядит (переменные) и что он может делать (функции).

Если вы инициируете класс: вы создаете объект. Если вы создадите класс, вы можете использовать «this» для обозначения самого объекта. Вот почему вы не можете установить «это», потому что это связано с объектом. Это специальная переменная только для чтения.

+5

Это специальная переменная, доступная только для чтения, которая может использоваться для обращения к самому объекту. Правильно ли это? – NAVEED

+0

Да, это правильно. – Pindatjuh

5

this ссылается на текущий экземпляр объекта класса.

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

+1

Возможно, недостаточно базового, но это самый правильный ответ технически. –

2

коротко: $this дает доступ к переменным объекта (и методы) Edit: в классе :) Edit 2: (но не в статических методов класса): D

+3

в классе :) – NAVEED

+0

исправлено;) thx mate – dfens

+0

но не в статических методах класса :)) – NAVEED

2

Как их имя предполагает, что методы экземпляра работают на экземплярах класса. Откуда они знают, с кем работать? Для этого нужен параметр this.

Когда вы вызываете метод экземпляра, вы действительно невидимо передаете дополнительный параметр: объект для его вызова. Например, если у вас есть это:

class Basket { 
    public function a() { 
    $this-> ...; 
    // ... 
    } 
    // ... 
} 

и вы называете $some_basket->a(), за кулисами, вы на самом деле что-то вроде вызова Basket::a($some_basket). Теперь a() знает, с кем Basket вы хотите работать. Этот специальный параметр - это то, что this относится к: текущему объекту, с которым вы имеете дело.

1

Класс - это шаблон или «штамп» для объекта.

Позволяет использовать классический пример «велосипеда». Там много толстых мотоциклов. Тем не менее, мы создали один велосипед, и мы можем использовать ключевое слово «this» для обозначения «этого» велосипеда.

В более техническом смысле, класс является шаблоном для объекта, который будет создан. Во время выполнения, после того, как объект был создан или был создан сам экземпляр, мы можем затем использовать ключевое слово «this» внутри, чтобы ссылаться на экземпляр, который запускает этот метод.

2

Несколько человек объяснили это в похожих выражениях, но я подумал, что добавлю, что, когда вы разговариваете с людьми, незнакомыми с объектно-ориентированным программированием, я объясняю, что определение класса - это план, как для дома, а «это» фактический дом, с которым вы работаете в данный момент. Там могут быть и другие дома, которые выглядят точно так же, но это конкретный объект (дом).

Смежные вопросы