
Wprowadzenie
$this to jedna z najważniejszych i najbardziej przydatnych rzeczy w programowaniu obiektowym w PHP (OOP, Object Oriented Programming). I niestety jedna z najczęściej pomijanych. Wiele osób słyszało o tym słowie kluczowym, ale nie wie, jak z niego korzystać.
W tym artykule krótko wyjaśnię, czym jest $this i jak działa. Jeśli programowanie obiektowe nic ci jeszcze nie mówi, zacznij od jego podstaw: ten tekst będzie wtedy dużo bardziej zrozumiały.
Czym jest $this i jak działa?
Słowo kluczowe $this daje nam dostęp do metod i właściwości naszej klasy. Możemy więc z wnętrza bieżącej klasy wywołać metodę albo odczytać właściwość.
Dla przykładu zacznijmy od utworzenia prostej klasy o nazwie Dog. Będzie nam towarzyszyć przez kolejne przykłady w tym wpisie.
class Dog {
public $name;
public $age;
}
Żeby odczytać właściwość naszej klasy, używamy $this w taki sposób:
$this->name
Powyższy przykład pokazuje po prostu, jak poprawnie użyć tego słowa kluczowego. Zwróć uwagę, że po strzałce pomijamy $ i piszemy name, choć właściwość zadeklarowano jako $name. Warto to zapamiętać, inaczej możesz długo się zastanawiać, dlaczego kod nie działa tak, jak powinien.
Słowo kluczowe $this a metody
Użyjmy teraz $this wewnątrz metody naszej klasy:
class Dog {
public $name;
public $age;
public function intro(){
echo 'Voici ' .$this -> name . ' et il a ' .$this -> age . 'ans.';
}
}
Żeby nasza funkcja się wykonała, musimy sami utworzyć obiekt klasy, ustawić wartości jej właściwości, a potem wywołać metodę publiczną:
<?php
// Utworzenie instancji
$blacky = new Dog();
// Dodanie właściwości name
$blacky->name = 'Toffee';
// Dodanie właściwości age
$blacky->age = '2 months';
I na koniec wywołujemy naszą funkcję.
echo $blacky->intro();
Właśnie wciągnęliśmy właściwości klasy do wnętrza funkcji. Wynik będzie wyglądał mniej więcej tak:
C’est Toffee et il a 2 mois.
$this pozwala też wywołać metodę z wnętrza innej metody tej samej klasy. Oto szybki przykład na nowej klasie, w której jedna metoda sięga po drugą przez $this.
class Man{
public $name;
public function say(){
echo 'Bonjour ' . $this->name;
}
public function hello(){
$this->say;
}
}
Utwórzmy teraz obiekt, ustawmy wartości i zwróćmy funkcję.
// Utworzenie instancji obiektu
$john = new Man();
// Dodanie imienia
$john->name ='john';
// Wywołanie metody hello()
echo $john->hello();
Wynik powinien być taki
Bonjour John
Tak właśnie używa się $this wewnątrz metody, żeby wywołać inną metodę tej samej klasy.
Podsumowanie
Jak widać, całość jest naprawdę wygodna. Przyzwyczajenie się do wstawiania tego do kodu chwilę zajmuje, ale kiedy już wejdzie w krew, będziesz z tego korzystać na okrągło.


