Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obiektowa silnia
Forum PHP.pl > Forum > Przedszkole
CzlowiekSkrypt
Witam, bawię się z obiektówką i postanowiłem dla praktyki napisać klasę która oblicza silnię, niestety wynik jaki dostaje to same zera i ich ilość jest zależna od wpisanej liczby podczas tworzenia obiektu. Kod strukturalnie działa bez zarzutu, niestety sypie mi się w OOP. Najbardziej mnie dziwią te zera, licznik jest ustawiony na 1 a zmienna $silnia też na 1 , skąd u licha te zera ?

  1.  
  2. <?php
  3.  
  4. class silnia {
  5.  
  6. public $silnia;
  7.  
  8. public function policz($liczba){
  9.  
  10. $this->liczba=$liczba;
  11.  
  12. for($i=1; $i<=$liczba; $i++){
  13. $this->silnia=1;
  14.  
  15. echo $silnia*=$i;
  16.  
  17. }
  18. }
  19. }
  20.  
  21. $obliczenie = new silnia;
  22. $obliczenie->policz(5);
  23.  
  24.  
  25. ?>
  26.  
  27. Wynik skryptu:
  28. Notice: Undefined variable: silnia in C:\xampp\htdocs\phptest\sesje\silnia.php on line 14
  29. 00000
  30.  
  31.  
  32.  
  33.  
com
dlatego że masz zły algorytm :
http://pl.wikisource.org/wiki/Silnia/kod#Iteracyjnie_2

CzlowiekSkrypt
Bazowałem na czymś takim :

  1. $n=10;
  2. $silnia1=1;
  3. for($i=1; $i<=$n; $i++){
  4. $silnia1 *= $i;}
  5. echo $silnia1;


Ten kod poza klasą śmiga aż miło
com
no to teraz tak to zaimplementuj do tej twojej 'obietowosci' wink.gif
CzlowiekSkrypt
Czyli krótko mówiąc - nie da się ? tongue.gif
com
dbaj o wciecia i dawaj } w nowej lini bo potem się gubisz smile.gif i nie echo tylko return sie w daje, ale oczywiście $this->silnia a nie $silnia itd

da się ale żeby nauka była owocna trzeba pomyśleć trochę samemu smile.gif ja Ci tylko podpowiadam biggrin.gif
CzlowiekSkrypt
Dobra przynajmniej wiem że nie będę siedział przy tym na marne oneeyedsmiley02.png
com
podziel się efektem swojej pracy, jak coś wykombinujesz dla potomniaków biggrin.gif

btw nie dajesz public silnia a private ew protected smile.gif

http://ideone.com/zz54sM Lkingsmiley.png

bo widzę kolega myśli i nic nie wymyślił php.gif
CzlowiekSkrypt
dzieki za rozwiazanie ! oneeyedsmiley02.png nie pomyślałem o IF ie tongue.gif
com
nie if był problemem, ale to ze mylisz obiektowość ze strukturalnościa, zmienne lokalne traktujesz jak obiektowe i na odwrót smile.gif

ponadto pomyliły Ci sie klamerki i nie tam te echo co miałeś wrzuciłeś, przeanalizuj to dobrze i przestudiuj kurs z którego sie uczyłeś jeszcze raz smile.gif

btw widziałem sciana.gif
CzlowiekSkrypt
Szkoda że skasowałem mój poprzedni kod bo to co wyprawiałem to jakieś czary, stała static zmieniała wartość tongue.gif oj dużo pracy mnie czeka z ta obiektówka
CzlowiekSkrypt
Miałem mniej więcej coś takiego

static private $silnia = 1; ,

bez IF ,

i pi razy drzwi coś takiego w funkcji for

for($i=1; $i<=$liczba; $i++){
self::$silnia*=$i;
}
return $i;


i w kodzie sobie wywoływałem $liczba, $i i $silnia żeby widzieć co się z nimi dzieje no i jak to zobaczyłem to poszedłem oglądać film biggrin.gif
com
no to byleś bliski prawdy jednego nie rozumiem czemu return $i a nie self::$silnia biggrin.gif
CzlowiekSkrypt
Teraz jak tak o tym myślę to w zasadzie nie wiem ... coś mi się z tego wszystkiego pomieszało oneeyedsmiley02.png , jeszcze raz dzięki za rozwiązanie i dobranoc biggrin.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.