Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dostep do danych obiektow
Spooky2
post 13.04.2011, 14:32:24
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.06.2007

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


Witam. Jestem kompletnie zielony w temacie programowania obiektowego - probuje zmienic przyzwyczajenia.
Mam pytanie, poniewaz nie dysponuje odpowiednia literatura.
Czy mozliwy jest bezposredni dostep do danych jednej klasy z poziomu metody innej klasy (nie wiem czy to ujalem)
Moze to zobrazuje.
  1. $fak = new faktura_int;
  2. $fak -> licz_fak_int_zap($id_dokumenut, $id_klienta);
  3. $fak -> licz_fak_int($id_dokumentu);
  4. $fak -> licz_fak_int_sprawdz_opcje();
  5. $fak -> licz_fak_int_licz_czas();
  6. $fak -> licz_fak_int_licz_rabat();
  7. $fak -> licz_fak_int_licz_rabat_ext2();
  8. $fak -> licz_fak_int_licz_wart();
  9. $fak -> licz_fak_int_dane_firmy();
  10. ///ok, powyzsze funkcje wyprodukowaly jakies dane (tyle, ze ich nie zwracaja)
  11. // do danych odwoluje sie ciagle w kolejnych metodach tej klasy tak: $this->$jakas_zmienna = cos_tam*$this->$jakas_zmienna :-)
  12. $klient = new uzytkownik;
  13. //i w tym miejscu chcialbym operowac na danych "wyprodukowanych" przez metody klasy faktura_int
  14. //chcialbym uzyskac zatem dostep w ponizszej funkcji do np $this->$jakas_zmienna
  15. $klient -> generuj_zaw_pdfa_fv();


Czy jedynym sposobem, jest utworzenie w klasie faktura_int funkcji zwracajacej wszystkie zmienne z poszczegolnych metod klasy w postaci np tablicy,
a nastepnie wywolanie danej metody w metodzie klasy uzytkownik? ($jakas_zmienna (w danej metodzie) = $fak -> zwroc_dane()wink.gif

Mam nadzieje, ze w miare udalo mi sie opisac problem
Go to the top of the page
+Quote Post
darko
post 13.04.2011, 15:25:28
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


nie:
// do danych odwoluje sie ciagle w kolejnych metodach tej klasy tak: $this->$jakas_zmienna = cos_tam*$this->$jakas_zmienna :-)
a:
// do danych odwoluje sie ciagle w kolejnych metodach tej klasy tak: $this->jakas_zmienna = cos_tam* $this->jakas_zmienna :-)
:-)


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Spooky2
post 13.04.2011, 16:50:18
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.06.2007

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


Oczywisty blad z mojej strony, ale wiadomo, parser i tak by tego nie puscil...
Go to the top of the page
+Quote Post
darko
post 13.04.2011, 19:10:44
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Czy to rozwiązuje Twój problem, bo trochę namieszałeś?
Cytat
Czy mozliwy jest bezposredni dostep do danych jednej klasy z poziomu metody innej klasy

Co rozumiesz jako "bezpośredni dostęp"? Powinieneś przekazać obiekt jako parametr metody i wtedy za pomocą getterów (lub bezpośrednio właśnie ale tylko do pól publicznych) możesz dostać się do interesujących Cię danych. Bezpośredni dostęp jest możliwy tylko do pól publicznych, natomiast dostęp do wszystkich danych obiektu nie powinien być możliwy, gdyż byłoby to sprzeczne z założeniem hermetyzacji. Najczęściej jest tak, że w trakcie implementacji konkretnej klasy dzieli się dane na te tylko do użytku przez obiekt i na te, będące wynikiem jakiś działań, do których można się odwołać za pomocą odpowiednich metod (poczytaj o getterach i setterach). Danym wewnętrznym nadaje się modyfikator private lub protected, natomiast w przypadku danych publicznych albo stosuje się modyfikator protected i udostępnia odpowiednie metody (gettery i settery) albo używa się metod magicznych, albo też (co nie jest dobre) nadaje się dostęp publiczny.

Cytat
ok, powyzsze funkcje wyprodukowaly jakies dane (tyle, ze ich nie zwracaja)

za mało kodu dałeś, nie znamy implementacji tych metod, skoro nic nie zwracają, to czy aby na pewno na końcu ciała metody jest instrukcja return <COŚ_TAM>? Czy te metody przypisują jakieś dane do pól obiektu? Tego nie wiemy.

A tak na marginesie:
Cytat
nie dysponuje odpowiednia literatura

proszę Cię, są miliony artykułów w sieci na temat programowania obiektowego, wystarczy przejrzeć pierwsze wyniki od google.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Spooky2
post 13.04.2011, 19:37:45
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.06.2007

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


OK, ide poszukac czegos dla siebie na helionie.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:07