Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dostaje błąd że odwołuje się do niezdefiniowanej funkcji
Forum PHP.pl > Forum > PHP > Object-oriented programming
john_doe
witajcie,

dziś po raz 1szy chciałem napisać coś obiektowo. Pewnie wyszło mi to trochę pseudo obiektowo ale co tutaj mam nie tak.
najpierw klasa

  1. <?php
  2.  
  3. class prostokat
  4. {
  5.  
  6. public $bokA, $bokB, $wynik;
  7.  
  8. public function setBokA($bokA)
  9. {
  10.    $this -> bokA = $bokA;
  11. }
  12.  
  13. public function setBokB($bokB)
  14. {
  15.    $this -> bokB = $bokB;
  16. }
  17.  
  18. public function setWynik()
  19. {
  20.    $this -> wynik = $wynik;
  21. }
  22.  
  23. // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  24.  
  25. public function getAction()
  26. {
  27.     switch ( $_POST['dzialanie'] )
  28.     {
  29.      case '+':
  30.       return '+';
  31.       break;
  32.      
  33.      case '-':
  34.       return '-';
  35.       break;  
  36.      
  37.      case '*':
  38.       return '*';
  39.       break;
  40.    
  41.      case '/':
  42.       return '/';
  43.       break;  
  44.      
  45.      default:
  46.       return 0;
  47.     }
  48.  }
  49.  
  50. public function obliczIloczyn($bokA, $bokB)
  51. {
  52.    $this -> wynik = $this -> bokA . getAction() . $this -> bokB;
  53.    //$this -> wynik = $this -> bokA * $this -> bokB;
  54.    return '---------------<br />Wynik = ' . $this -> wynik;
  55. }
  56.  
  57. public function showBokA()
  58. {
  59.    return 'Bok a = ' . $this -> bokA;
  60. }
  61.  
  62. public function showBokB()
  63. {
  64.    return 'Bok b = ' . $this -> bokB;
  65. }
  66.  
  67. public function validateData()
  68. {
  69.     if( eregi("^[0-9]" , $this -> bokA) && eregi("^[0-9]" , $this -> bokB) )
  70.     {
  71.      return 1;
  72.     }else {
  73.       return 0;
  74.        }
  75. }
  76.  
  77.  
  78.  
  79. } // end of class
  80.  
  81. ?>


i uzycie

  1. <form method="POST" action="">
  2.  
  3. Podaj bok a: <input type="text" name="bok1" />
  4. Podaj bok b: <input type="text" name="bok2" />
  5. <br /><br />
  6. Dzialanie:   <br />
  7.     <input type="radio" name="dzilanie" value="+" />dodaj
  8.     <br />
  9.        <input type="radio" name="dzilanie" value="-" />odejmij
  10.     <br />
  11.        <input type="radio" name="dzilanie" value="*" />pomnoz
  12.     <br />
  13.        <input type="radio" name="dzialanie" value="/" />podziel
  14.     <br /><br />
  15. <input type="submit" value="OK" />
  16.  
  17. </form>
  18.  
  19.  
  20. <?php
  21.  
  22. include ('_class.php');
  23.  
  24. $square = new prostokat();
  25.  
  26. $square -> setBokA( $_POST['bok1'] );
  27.  
  28. $square -> setBokB( $_POST['bok2'] );
  29.  
  30. if ( $square -> validateData() == 1 )
  31. {
  32.  
  33. print $square -> showBokA() . '<br />';
  34.  
  35. print $square -> showBokB() . '<br />';;
  36.  
  37. print $square -> obliczIloczyn(bokA, bokB);
  38.  
  39. } else print "Podaj własciwe dane !!!";
  40.  
  41.  
  42.  
  43.  
  44.  
  45. ?>


i dostaje taki blad
Fatal error: Call to undefined function getAction() in C:\wamp\www\oop\_class.php on line 52

sama funkcja zwracająca znak działa...
pozdrawiam
antyqjon
Do metody wewnątrz klasy musisz się odwoływać tak samo jak do składowej: $this->nazwaMetody(), a u Ciebie w linii 52 jest samo getAction().
john_doe
ok dzieki, błędu już nie dostaje. zwracam string czyli gdy w formularzu podam dwie cyfry 4 i 3 zwróci mi wynik 403 a nie np dodanie tych liczb. funkcja getAction jest do bani..
bim2
albo użyjesz eval, albo zmienisz metodę getAction. Przekazuj 2 parametry do getAction (obie liczby) i wykonuj działanie w niej. smile.gif
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.