Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]początki własnych klas
Forum PHP.pl > Forum > Przedszkole
bialko0019
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ć ?
CuteOne
  1. $produkt = new produkty;
  2. $produkt->artykul(20);
  3. echo $produkty->cena;
Fifi209
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;
bialko0019
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...
wdev
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
bialko0019
Dziękuję winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.