Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obiekty - wskaźnik "this"
Forum PHP.pl > Forum > Przedszkole
Gość_TakiTam
Probuje podlapac o co chodzi w programowaniu obiektowym i mam jedno zasadnicze pytanie, ktore rodzi sie w mojej glowie za kazdym razem gdy rozpoczynam kurs.
1. Po co jest wskaznik "this"?
2. Co on daje,do czego sluzy?.
3. Dlaczego nie mozna sie bez niego obejsc?

Pozdr
Zbłąkany
Napisze najprosciej jak potrafie: za pomoca zmiennej $this mozesz sie odwolac z kazdej funkcji do innej funkcji a takze z kazdej funkcji do atrybutu klasy. Oczywiscie mozna z niego nie korzystac ale to utrudnia troche zadanie bo trzeba wtedy wiekszosc rzeczy wstawiac do stalych albo zwracac tak aby inne funkcje mialy dostep do tych danych(zmiennych, badz funkcji) smile.gif
Gość_TakiTam
No dobra. Mam zatem cos takiego:

  1. <?php
  2.  
  3. class nazwaklasy
  4. {
  5. var $atrybut;
  6. function operacja($param)
  7. {
  8. $this->atrybut = $param
  9. echo $this->atrybut;
  10. }
  11. }
  12.  
  13. ?>


i mam nastepuujaca prosbe: czy ktos moglby mi krok po kroku wytlumaczyc co w ktorej linijce robi skrypt?

Ja rozumuje tak:
1. Tworzy klase "nazwaklasy".
2. Zadeklarowuje zmienna $atrybut (nie rozumiem dlaczego zadeklarowuje zmienna. Co to daje? Co by sie stalo bez zadeklarowania zmiennej w klasie?).
3. Tworzy operacje (funkcje) o parametrze $param , ktora...
... no wlasnie - co w tym miejscu sie dzieje, co tak naprawde wykonuje skrypt w dwoch kolejnych (ostatnich) etapach (miedzy klamerkami operacji {})?

Dzieks
silent
Posłużę się takim przykładem:
  1. <?php
  2. class nazwaklasy
  3. {
  4. var $atrybut; // deklaracja zmiennej
  5. function ustawAtrybut($param)
  6. {
  7. $this->atrybut = $param; // przypisanie atrybutowi wartości parametru
  8. }
  9.  
  10. function wypiszAtrybut()
  11. {
  12. echo $this->atrybut; // wypisanie wartości atrybutu
  13. }
  14. }
  15.  
  16. // tworzymy sobie 2 obiekty klasy nazwaklasy
  17. $obiekt1=new nazwaklasy;
  18. $obiekt2=new nazwaklasy;
  19.  
  20. // przypisanie obiektom 2 różnych wartości atrybutu
  21. $obiekt1->ustawAtrybut('asdf');
  22. $obiekt2->ustawAtrybut('qwer');
  23.  
  24. $obiekt1->wypiszAtrybut(); // wypisze asdf
  25. $obiekt2->wypiszAtrybut(); // wypisze qwer
  26.  
  27. ?>


Deklaracje zmiennych w klasie robi się dla przejrzystości kodu. Patrzysz na początek klasy i wiesz jakie ma atrybuty i jakich typów, nie musisz ich szukać w poszczególnych metodach.
$this oznacza jakby odwołanie się do samego siebie, czyli jeśli masz obiekt jakiejś klasy który nazywa się $obiekt1 to $this jest tożsame z $obiekt1 (dla tego obiektu).
Nieźle zamotałem, ciekawe ile w tym racji - ja to tak rozumiem, a z obiektówką jestem po tyłach niestety. Tak więc proszę - poprawcie mnie jeśli się mylę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.