Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

"OO" - Programowanie obiektowe w praktyce

Używanie obiektu, referencje

Z powyższych przykładów można już wywnioskować sposób, w jaki będziemy używać obiektów - tworzyć je, zmieniać ich właściwości i wywoływać metody. Dla formalności jednak poświęćmy temu chwilę. Wiesz już, że do tworzenia obiektów używamy operatora new, a do dostępu do składowych (właściwości i metod) operatora strzałki (->). Operatora kropki tutaj nie używamy, nie ma w PHP tak jak np. w C++ wyodrębnionych wskaźników, przy których takie dwa sposoby dostępu do składowych byłyby potrzebne.

Są jednak referencje, których zachowanie zmieniło się w PHP5. Od teraz przy przekazywaniu obiektu do funkcji czy przypisywaniu do innej zmiennej obiekt jest nie jest przekazywany przez wartość tj. nie jest tworzona jego kopia, jak było w PHP4 (teoretycznie, w praktyce podobno PHP4 tworzył kopię dopiero w momencie modyfikacji obiektu).

Spójrzmy więc na przykład:

 $michal_aleksandrowicz_berlioz = new Czlowiek; // czlowiek o przydługawej godności, operator new
       
 // chcemy trochę pooperować na tym obiekcie, ale identyfikator 
 // zmiennej jest przydługawy, wypadałoby więc go stworzyć sobie referencję 
 $berlioz = $michal_aleksandrowicz_berlioz; // tworzymy referencję (brak nie ma znaku "&")
 $berlioz->plec = 'M'; // zmieniamy właściwość, operator strzałki
 $berlioz->rosnij(120); // wywołujemy metodę, operator strzałki
 echo $berlioz->wzrost; // pobieramy właściwość, operator... strzałki?
       
 // a tak tworzymy kopię obiektu, nowy obiekt o takich samych wartościach właściwości
 $inny_czlowiek = $berlioz->__clone();
       
 // przypomnijmy, jak wygląda tworzenie referencji do nie-obiektów np. tablic
 $tablica = array(1 => 'jeden', 2 => 'dwa', 3 => 'trzy');
 $tab = &$tablica; // tutaj musimy użyć znaku "&"

Referencjom oraz klonowaniu obiektów (PHP5 wprowadza kolejną magiczną metodę - __clone() do tworzenia kopii) przyjrzymy się jeszcze dokładniej w innym rozdziale. Na tym etapie zapamiętaj, że nie musisz używać znaku ampersand (&), aby tworzyć referencje do obiektów, nie musisz także zaznaczać, że funkcja pobiera czy zwraca obiekt przez referencję, jak robiłeś zawsze, gdy przekazywałeś np. tablice. Z obiektami jest tak domyślnie.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (3)
:))
Piątek 11 Kwiecień 2008 2:45:35 pm - lonas

Bardzo fajne ale ... czemu takie krotkie wiecej !! :)

koment
Czwartek 26 Lipiec 2007 10:46:57 pm - plurr <xytrass_at_o2.pl>

bardzo fajny artykul, nareszcie jasniej zrozumialem klasy ;p Tylko gdzie reszta ? :))

To są podstawy?
Niedziela 22 Lipiec 2007 10:36:39 am - solari_de_marco <solari_de_marco_at_interia.pl>

Kurs niby podstawy a .... Potrafię dobrze programować strukturalnie i chciałem się nauczyc OO i mi to ciężko idzie... :/ Myślałem ze tu się czegoś nauczy, niby oki ale ... jak mam się połączyć z bazą danych? Gdzie jest wyjasnienie ze trzeba wybrac baze danych, połączyc sie i itp, jak podajesz kod wykożystania klas to już pokaż jak się łaczyć z tą bazą danych !!

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System