Widzę zmienną $this
w PHP cały czas i nie mam pojęcia, do czego jest używana. Nigdy go osobiście nie użyłem.
Czy ktoś może mi powiedzieć, jak ta zmienna $this
działa w PHP?
Jest to odniesienie do bieżącego obiektu, jest najczęściej używane w kodzie zorientowanym obiektowo.
Przykład:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
Spowoduje to zapisanie ciągu „Jacka” jako właściwości utworzonego obiektu.
Najlepszym sposobem na poznanie
$this
zmiennej w PHP jest wypróbowanie jej przeciwko interpreterowi w różnych kontekstach:Więc
$this
pseudozmienna ma metodę i właściwości Current Object. Taka rzecz jest przydatna, ponieważ umożliwia dostęp do wszystkich zmiennych składowych i metod składowych wewnątrz klasy. Na przykład:$this
jest odniesieniem do PHP,Object
które zostało stworzone przez interpreter dla Ciebie, które zawiera tablicę zmiennych.Jeśli wywołasz
$this
wewnątrz zwykłej metody w normalnej klasie,$this
zwraca Object (klasę), do której należy ta metoda.Może
$this
być niezdefiniowane, jeśli kontekst nie ma obiektu nadrzędnego.php.net ma dużą stronę poświęconą programowaniu obiektowemu PHP i
$this
zachowaniu w zależności od kontekstu. https://www.php.net/manual/en/language.oop5.basic.phpźródło
Znam jego stare pytanie, w każdym razie inne dokładne wyjaśnienie dotyczące tego . $ this jest używane głównie do odwoływania się do właściwości klasy.
Przykład:
wynik:
źródło
Jest to sposób na odwołanie się do instancji klasy z jej wnętrza, tak samo jak w przypadku wielu innych języków obiektowych.
Z dokumentacji PHP :
źródło
Zobaczmy, co się stanie, jeśli nie użyjemy $ this i spróbujemy mieć zmienne instancji i argumenty konstruktora o tej samej nazwie z następującym fragmentem kodu
Nie odbija się tylko echem
to echo „Tom”
źródło
$this
drugiego konstruktora.$name
jest Tom, ale poza funkcją nie ma żadnej wartości, ponieważ jej zakres jest ograniczony do zakresu funkcji.kiedy tworzysz klasę, masz (w wielu przypadkach) zmienne instancji i metody (inaczej funkcje). $ this uzyskuje dostęp do tych zmiennych instancji, dzięki czemu funkcje mogą pobierać te zmienne i robić z nimi co tylko zechcesz.
inna wersja przykładu medera:
źródło
$this
jest odniesieniem do obiektu wywołującego (zwykle jest to obiekt, do którego należy metoda, ale prawdopodobnie inny obiekt, jeśli metoda jest wywoływana statycznie z kontekstu obiektu drugorzędnego).źródło
$ to jest zmienna specjalna i odnosi się do tego samego obiektu, tj. samo.
faktycznie odwołuje się do instancji bieżącej klasy
oto przykład, który wyjaśni powyższe stwierdzenie
źródło
To jest długie szczegółowe wyjaśnienie. Mam nadzieję, że pomoże to początkującym. Uczynię to bardzo prostym.
Najpierw utwórzmy klasę
Możesz pominąć tag zamykający php,
?>
jeśli używasz tylko kodu php.Teraz dodajmy właściwości i metodę wewnątrz
Class1
.Właściwość jest zwykłą zmienną, ale nadajemy jej nazwę property, ponieważ znajduje się wewnątrz klasy.
Metoda jest po prostu prostą funkcją, ale mówimy o metodzie, ponieważ znajduje się ona również wewnątrz klasy.
Słowo
public
kluczowe oznacza, że dostęp do metody lub właściwości można uzyskać w dowolnym miejscu skryptu.Teraz, jak możemy wykorzystać właściwości i metodę wewnątrz
Class1
?Odpowiedzią jest utworzenie instancji lub obiektu, pomyśl o obiekcie jak o kopii klasy.
Stworzyliśmy obiekt, który jest
$object1
kopiąClass1
z całą zawartością. I wyrzuciliśmy całą zawartość$object1
usingvar_dump()
.To ci da
Więc cała zawartość
Class1
znajduje się w$object1
, z wyjątkiem tegoMethod1
, że nie wiem, dlaczego metody nie są wyświetlane podczas zrzucania obiektów.A co, jeśli chcemy
$property1
tylko uzyskać dostęp . To proste, robimyvar_dump($object1->property1);
, po prostu dodaliśmy->property1
, wskazaliśmy na to.mamy również dostęp
Method1()
, robimyvar_dump($object1->Method1());
.Teraz przypuśćmy, że chcę uzyskać dostęp
$property1
od wewnątrzMethod1()
, zrobię tostworzyliśmy,
$object2 = new Class1;
który jest nową kopiąClass1
lub możemy powiedzieć, że jest instancją. Następnie wskazaliśmyproperty1
z$object2
Spowoduje to wydrukowanie
string(15) "I am property 1"
w przeglądarce.Teraz zamiast robić to w środku
Method1()
My to robimy
$this
Przedmiot jest używany wewnątrz klasy odnosi się do samej klasie.Jest to alternatywa dla stworzenia nowego obiektu i zwrócenia go w ten sposób
Inny przykład
Stworzyliśmy 2 właściwości zawierające liczby całkowite, a następnie dodaliśmy je i wstawiliśmy wynik
$this->result
.Nie zapomnij tego
$this->property1
=$property1
=119
mają tę samą wartość… itd
Mam nadzieję, że to wyjaśnia pomysł.
Ta seria filmów pomoże Ci bardzo w OOP
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
źródło
Odnosi się do wystąpienia obecnej klasy, jak powiedział meder .
Zobacz dokumentację PHP . Jest to wyjaśnione w pierwszym przykładzie.
źródło