PHP/Klasy i obiekty: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
m Wycofano edycje użytkownika 109.196.34.8 (dyskusja). Autor przywróconej wersji to 83.4.87.236.
Linia 28:
</source>
 
Zwyczajowo pola deklaruje się na początku klasy, natomiast później - metody, które okazują się być bardzo podobne do funkcji. Podobieństwo jest jak najbardziej uzasadnione. Właściwie funkcje także reprezentują pewne zachowanie, więc nic nie stoi na przeszkodzie, aby wykorzystać tę funkcjonalność do zdefiniowania zachowań obiektów. Zasady działania metod są bardzo podobne - pobierają one argumenty i mogą zwracać wartość.szok dawid deptuła Jedyna istotna różnica to obecność specjalnego wskaźnika <code>$this</code>, który wskazuje zawsze na obiekt, na którym daną metodę wywołujemy. Dzięki niemu możemy dostać się do wartości przechowywanych w polach obiektu oraz wywoływać inne metody. Służy do tego specjalny operator '''->'''. Zauważ, że odwołując się do pól, pomijamy znak dolara. Nie przejmuj się słowem kluczowym '''public'''. Jego znaczenie poznamy za chwilę.
 
Pola klasy zachowują się, jak zwykłe zmienne. Mogą być częścią wyrażeń, możemy do nich przypisywać wartości i wykonywać wszystkie inne operacje, które są prawidłowe dla zmiennych.
Linia 58:
Do klasy '''Person''' nie będziemy dodawać metody w stylu <code>polaczSieZBazaDanych()</code>, ponieważ nie ma ona żadnego związku z osobami. Co niby miałoby oznaczać wywołanie <code>$adam->polaczSieZBazaDanych()</code>? Adam jest osobą, a komunikacja z bazami danych to zadanie dla zupełnie innej klasy specjalizującej się w tym konkretnym zagadnieniu.
 
=== Zmienne obiektowe są referencjami ===
=== Wartości ===
Wspomnieliśmy, że w PHP5 obiekty nie są rodzajem wartości, lecz oddzielnym bytem, do którego skrypt posiada jedynie referencje. Spójrzmy, czym to skutkuje w praktyce. Rozpatrzmy prosty skrypt:
 
Linia 82:
} // end modify();
 
$damianjanusz = new Person;
$damianjanusz->setFullName('DamianJanusz', 'KalinowskiKowalski');
modify($damianjanusz);
echo $damianjanusz->getFullName();
</source>