self vs. this w PHP

PHP obsługuje klasy i inne konstrukcje obiektowe. samego siebietoMoże być stosowany w funkcjach statycznych tak Nie dostępna zmienna klasy i metody z samego siebie:: $ this-> (Zauważ, że PHP> 5.3 pozwala na użycie $ this ze zmiennymi statycznymi użyj $ this :: $ foo. $ this-> foo nadal będzie niezdefiniowane, jeśli $ foo jest zmienną statyczną). Potrzebuje instancji obiektu Nie tak

self vs this w PHP - Przykłady

klasa exampleClass public static $ foo; bar publiczny; funkcja publiczna regularFunction () echo $ this-> bar;  public static function staticFunction () echo self :: $ foo;  public static function anotherStatFn () self :: staticFunction ();  funkcja publiczna regularFnUsingStaticVar () echo self :: $ foo;  // UWAGA: Od PHP 5.3 dozwolone jest użycie $ this :: $ bar zamiast self :: $ bar exampleClass :: $ foo = "Hello"; $ obj = nowy exampleClass (); $ obj-> bar = "Świat!"; exampleClass :: staticFunction (); / * drukuje Hello * / $ obj-> regularFunction (); / * drukuje Świat! * / 

Funkcje statyczne mogą używać tylko zmiennych statycznych. Funkcje statyczne i zmienne są przywoływane przez samego siebie::functionName () lub samego siebie::nazwa zmiennej W powyższym przykładzie zmienne statyczne są przywoływane przy użyciu nazwy klasy (przykladClass :: $ foo) lub przy pomocy samego siebie:: (self :: $ foo), gdy jest używany w metodzie statycznej [o nazwie staticFunction ()] klasy.

Zwykłe funkcje i zmienne klasy wymagają odniesienia do kontekstu obiektu. Nie mogą istnieć bez kontekstu obiektowego. Kontekst obiektu zapewnia $ to. W powyższym przykładzie $ bar jest zmienną regularną i dlatego jest określany jako $ obj-> bar (w kontekście obiektu ze zmienną obj) lub jako pasek $ this-> (ponownie w kontekście obiektu w ramach metody obiektu).

samego siebie nie używa poprzedzającego $ bo samego siebie nie oznacza zmiennej, ale sama konstrukcja klasy. $ to odwołuje się do określonej zmiennej, więc ma poprzedzającą $.

Bibliografia

  • Słowo kluczowe statyczne - PHP.net