Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] nie rozumiem obiektowości
pain3hp
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 2
Dołączył: 23.01.2010

Ostrzeżenie: (0%)
-----


Będę bardzo wdzięczny jeśli ktoś poświęci chwilę czasu i wyjaśni mi te fragmenty kodu:

  1. class zawodnik
  2. {
  3. public $imie;
  4. public $nazwisko;
  5. public function przedstaw()
  6. {
  7. echo $this->imie;
  8. echo $this->nazwisko;
  9. }
  10. }
  11. $player = new zawodnik();
  12. $player->imie='Zenek';
  13. $player->nazwisko='Kowalski';
  14. $player->przedstaw();

Mam stworzoną klasę zawodnik która posiada dwa pola publiczne $imie i $nazwisko, oraz publiczną metodę przedstaw nie posiadającą żadnych argumentów, która jedynie wyświetli właściwości pola obiektu na którym zostanie wywołana?

operatorem
  1. new
tworzę obiekt $player klasy zawodnik.
Kolejne dwie instrukcje nadają (teraz proszę o informację jak to nazywać), atrybuty, właściwości?....
  1. imie
, oraz
  1. nazwisko
, obiektowi $player.
Następnie na obiekcie $player wywołuję metodę przedstaw();

Na ekranie pojawia się: ZenekKowalski

Wszystko wydaje się być OK ale taki sam efekt jest w przypadku takiego kodu i pytanie brzmi dlaczego?
  1. class zawodnik
  2. {
  3. public function przedstaw()
  4. {
  5. echo $this->imie;
  6. echo $this->nazwisko;
  7. }
  8. }
  9. $player = new zawodnik();
  10. $player->imie='Zenek';
  11. $player->nazwisko='Kowalski';
  12. $player->przedstaw();


Kolejne pytanie dotyczy metod klasowych __get i __set
książka vademecum profesjonalisty wyd.czwarte podaje kod ktory niczego nie wyświetla, jednak jest bardzo słabo opisane co się dzieje, w miarę możliwości proszę aby ktoś zorientowany mi to wytłumaczył
  1. class nazwaklasy
  2. {
  3. public $atrybut;
  4. function __get($nazwa)
  5. {
  6. return $this->$nazwa
  7. }
  8. function __set($nazwa, $wartosc)
  9. {
  10. $this->$nazwa = $wartosc;
  11. }
  12. }
  13. $a = new nazwaklasy();
  14. $a->$atrybut = 5 //dlaczego jest $ przed 'atrybut' (IMG:style_emoticons/default/questionmark.gif) ?
  15. $a->$atrybut; //pisza w ksiazce ze sie wywoła teraz __get jednak na ekranie nic nie ma nawet jak dodam echo


dziękuję
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:49