Czy stoisz przed wyzwaniem nauczenia się podstaw programowania obiektowego w PHP? W centrum tej tematyki znajdują się specjalne odniesienia $this i self. Te dwa słowa kluczowe są kluczowe dla zarządzania obiektami i klasami w PHP, ponieważ kontrolują komunikację i dostęp do zmiennych instancji oraz stałych. Przyjrzyjmy się wspólnie różnicom i zastosowaniu tych koncepcji.
Najważniejsze wnioski
- $this to odniesienie do bieżącego obiektu i jest używane w metodach instancji.
- self odnosi się do aktualnej klasy i jest używane do uzyskiwania dostępu do właściwości statycznych, metod oraz stałych.
- Różnica między $this a self jest fundamentalna dla zrozumienia programowania obiektowego w PHP.
Zrozumienie odniesienia $this
Zacznijmy od słowa kluczowego $this. $this to specjalna zmienna, która odnosi się do bieżącego obiektu. Kiedy uzyskujesz dostęp do $this wewnątrz metody instancji, możesz uzyskać dostęp do wszystkich zmiennych instancji i metod tego konkretnego obiektu.

Załóżmy, że masz klasę Database, którą instancjujesz. Wewnątrz metody tej klasy możesz na przykład uzyskać dostęp do zmiennych instancji, takich jak User lub Pass. Dzieje się to przez $this->User lub $this->Pass. Te zmienne istnieją tylko w kontekście danego obiektu, dlatego $this jest kluczowe.
Ważne jest, aby wiedzieć, że $this jest uniwersalnym odniesieniem, które zawsze wskazuje na bieżący obiekt. Jeśli istnieją inne obiekty, $this kontekstowo odnosi się do odpowiedniego obiektu, w którym znajduje się kod.
Klucz self w szczegółach
Z kolei słowo kluczowe self nie jest ograniczone do instancji. Odnosi się do samej klasy, co pozwala ci uzyskać dostęp do statycznych właściwości i stałych tej klasy. Ponownie rozważmy klasę Database. Załóżmy, że zdefiniowałeś stałą wewnątrz tej klasy. Możesz uzyskać dostęp do tej stałej, używając self::Constant.

Zauważ, że self jest szczególnie przydatny w przypadku metod i właściwości statycznych. Tego rodzaju zmienne są dostępne dla całej instancji klasy, a nie dla każdego pojedynczego obiektu. To jest zasadnicza różnica w porównaniu do zmiennych instancji.
Oczywiście istnieje również sytuacja, w której chcesz uzyskać dostęp do metod statycznych lub stałych w metodzie klasy. W takim przypadku używasz self::Method(), aby upewnić się, że dostęp następuje przez klasę, a nie przez instancję.

Przykład w praktyce
Wyobraź sobie, że chcesz stworzyć klasę SIS. Oto prosty przykład, który demonstruje zastosowanie obu odniesień.

Wewnątrz tej klasy moglibyśmy zdefiniować statyczne właściwości i metody. Powiedzmy, że masz metodę getName(), która używa zmiennej instancji name. Aby uzyskać dostęp do tej zmiennej instancji, użyjesz $this->name.

Aby uzyskać dostęp do stałej KEY_PATH zdefiniowanej w klasie, używasz self::KEY_PATH. Zapewnia to, że przy dostępie do stałych nie wpadniesz w konflikt związanych z instancjami.
Na koniec za pomocą echo pokażesz, że odniesienia działają. Możesz bez problemu wyświetlić zarówno zmienne instancji, jak i stałe wartości, aby wykazać, że są prawidłowo referencjonowane.

Podsumowanie – Zrozumienie $this i self w PHP
W dzisiejszym poście poznałeś podstawy wykorzystania i różnic między $this a self w programowaniu obiektowym przy użyciu PHP. Podczas gdy $this odnosi się specjalnie do bieżącego obiektu, self odnosi się do samej klasy. Te koncepcje są podstawowe dla skutecznego rozwoju w PHP.
Często zadawane pytania
Jaka jest różnica między $this a self?$this odnosi się do bieżącego obiektu, podczas gdy self odnosi się do samej klasy.
Kiedy powinienem używać $this?Użyj $this, gdy chcesz uzyskać dostęp do zmiennych lub metod instancji.
Kiedy self jest sensowne?self jest sensowne, gdy chcesz uzyskać dostęp do statycznych właściwości lub stałych klasy.
Czy istnieje szczególny przypadek dla self?Tak, self jest przydatne do uzyskiwania dostępu do członków klasy w ramach metod statycznych.
Jak upewnić się, że poprawnie uzyskuję dostęp do zmiennych instancji?Użyj $this->zmiennaNazwa, aby upewnić się, że uzyskujesz dostęp do wartości specyficznych dla instancji.