Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie obiektu klasy dwa razy ?
Forum PHP.pl > Forum > PHP > Object-oriented programming
boya
Witam

Mam glowny plik do ktorego wciagam za pomoca include_once pliki z klasami i pozniej tworze obiekt klasy

  1. <?php
  2. include_once(".././class/klasa.php");
  3.  
  4. $this= new sklep;
  5. $wysylka= new wysylka;
  6. ?>


no i gitara gdzie bym nie potrzebowal stworzyc obiekt do klasy wszedzie dziala.

Ale w klasie wysylka mam klika funkcji ktore odwoluja sie do innych funkcji w ramach tej klasy wiec normalnie zrobil bym tak:

  1. <?php
  2. class wysylka(){
  3.  
  4.  funkcja pierwsza(){
  5.  ...
  6.  return $zmienna;
  7.  
  8.  }
  9.  
  10.  funkcja druga(parametr1,parametr2){
  11.  $wysylka->pierwsza();
  12.  }
  13.  
  14. }
  15. ?>


wynik takiej operacji to Fatal error: Call to a member function on a non-object in /home/test/public_html/class/klasa.php on line 467

problem znika gdy dodamy stworzymy obiekt klasy po raz drugi:

  1. <?php
  2. funkcja druga(parametr1,parametr2){
  3.  
  4.  $wysylka= new wysylka; // drugi raz
  5.  $wysylka->pierwsza();
  6.  
  7. }
  8. ?>


czy to prawidlowe rozwiazanie, czy ja cos spiepszylem ?
pozdrawiam
LBO
Do odwoływania się do innych metod danej klasy, wewnątrz innej jej metody, służy słowo kluczowe $this.
  1. <?php
  2. class Klasa
  3. {
  4. public function pierwsza()
  5. {
  6. print "To jest pierwsza metodan";
  7. }
  8.  
  9. public function druga()
  10. {
  11. $this->pierwsza();
  12. print "To jest metoda druga, używająca metody pierwsza()n";
  13. }
  14. }
  15.  
  16. $klasa = new Klasa();
  17. $klasa->druga();
  18.  
  19. //Wyświetli się:
  20. //To jest pierwsza metoda
  21. //To jest metoda druga, używająca metody pierwsza()
  22. ?>
boya
o tym slowie kluczowym nie doczytalem z manuala,
dziekuje i pozdrawiam
DeyV
Co więcej - nie wolno używać słowa $this w żadnym innym kontekstcie.
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.