Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]początki własnych klas
bialko0019
post 28.10.2010, 16:05:51
Post #1





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

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


Witam.

Wiem mniej więcej o co chodzi w klasach, jednak jakoś coś mi nie wychodzi przy tworzeniu odpowiedniej. Nakierujcie mnie, co robię źle.

  1.  
  2. class produkty {
  3.  
  4. var $id, $nazwa, $cena;
  5.  
  6. function artykul($id)
  7. {
  8.  
  9. [..]
  10. $dana = mysql_fetch_array($zapytanie);
  11.  
  12. $this->id=$dana['id'];
  13. $this->nazwa=$dana['nazwa'];
  14. $this->cena=$dana['cena'];
  15.  
  16. }
  17.  
  18. }
  19.  
  20. /// teraz chcę wyświetlić konkretny produkt po ID czyli chyba?:
  21.  
  22.  
  23. $produkt = new produkty;
  24. $produkt->artykul(20); // jak to wyświetlę to chciałbym mieć możliwośc wyboru konretnej danej, np. tutaj chcę wyświetlić nazwą produktu, o - a tutaj cenę ? Dlatego myślałem coś o tym:
  25. echo $produkt->artykul(20)->nazwa;
  26.  
  27.  


ale to jest nie poprawne... Przypuścmy chcę utworzyć klasę a w niej funkcję, która szuka konkretnego produktu po ID. Tak napisałęm "po swojemu" jednak nie wiem jak wyciągnąć konkretną danę z funkcji - np. cenę i nazwę ?

Jak to zrobić ?


--------------------
---
"kto pyta ten nie błądzi"...
Go to the top of the page
+Quote Post
CuteOne
post 28.10.2010, 16:14:21
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $produkt = new produkty;
  2. $produkt->artykul(20);
  3. echo $produkty->cena;
Go to the top of the page
+Quote Post
Fifi209
post 28.10.2010, 16:20:19
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Widać od razu, że uczysz się ze starego kursu/starej książki.
To co pokazałeś obrazuje obiektowość PHP4. smile.gif

Co do pytania, funkcja musiałaby zwracać coś takiego:
  1. return $this;


abyś mógł zrobić tak:
  1. echo $klasa->art(20)->nazwa;


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
bialko0019
post 28.10.2010, 16:45:54
Post #4





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

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


Cytat(CuteOne @ 28.10.2010, 17:14:21 ) *
  1. $produkt = new produkty;
  2. $produkt->artykul(20);
  3. echo $produkty->cena;



coś nie chodzi....


Skróciłem troszeczkę i po prostu - chcę wyjąć dane:

  1. class produkty {
  2.  
  3. var $id, $nazwa, $cena;
  4.  
  5. function artykul()
  6. {
  7.  
  8.  
  9. $this->ala="ala ma kota a kot ma ale"; // tą zmienną
  10.  
  11. }
  12.  
  13. }
  14.  
  15.  
  16.  
  17. $produkt = new produkty;
  18. $produkt->artykul();
  19. echo $produkty->ala; // chcę wyświetlić w tym miejscu ?
  20.  


questionmark.gif

To znaczy, być może, czytam różne kursy na internecie, więc pewnie tak...

Ten post edytował bialko0019 28.10.2010, 16:46:18


--------------------
---
"kto pyta ten nie błądzi"...
Go to the top of the page
+Quote Post
wdev
post 28.10.2010, 17:05:33
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 20
Dołączył: 20.01.2010

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


1. Wywołując w sposób $obiekt->własność odwołujesz się do konkretnego obiektu. Musisz więc wywołać własność OBIEKTU (produkt), a nie klasy(produkty).
  1. $produkt = new produkty; // obiekt = new klasa;
  2. $produkt->artykul()
  3. echo $produkt->ala; // tu miałeś żle produktY!!!

2. Nie możesz wywołać nieistniejącej własności (przynajmniej nie będziemy się zagłębiać w to jak to się robi), więc zmienna $ala musi być zadeklarowana wewnątrz klasy.
3. Jakie masz ustawienia raportowania błędów? Bo Twój skrypt od razu zwrócił dwa błędy typu E_NOTICE, ustaw sobie w php.ini, żeby Ci je wyświetlało winksmiley.jpg


--------------------
-wdev-
Go to the top of the page
+Quote Post
bialko0019
post 28.10.2010, 17:26:48
Post #6





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

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


Dziękuję winksmiley.jpg


--------------------
---
"kto pyta ten nie błądzi"...
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: 24.06.2024 - 07:35