Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]licznik błąd w fclose
Forum PHP.pl > Forum > Przedszkole
Alessio
eh zaraz mnie cos trafi,
  1. <?php
  2. class Licznik
  3. {
  4. private $licz;
  5. private $plik;
  6.  
  7. public function __contruct()
  8. {
  9. if(!(file_exists("licznik.txt") || !isset($_COOKIE['zliczony'])))
  10. {
  11. $this->plik = fopen("licznik.txt", "w+");
  12. fputs($this->plik = "-");
  13. $this->licz = 1;
  14.  
  15. }
  16. else
  17. {
  18. $this->licz = filesize("licznik.txt");
  19. $this->plik = fopen("licznik.txt");
  20.  
  21. }
  22. if (!$_COOKIE['zliczony'])
  23. {
  24. flock($this->plik,2);
  25. fputs($this->plik,"-");
  26. flock($this->plik,3);
  27. setcookie('zliczony',1);
  28. }
  29. }
  30.  
  31. public function __destruct()
  32. {
  33. fclose($this->plik);
  34. }
  35. public function pokazLicznik()
  36. {
  37. return $this->licz;
  38. }
  39. }
  40. $Licznik = new Licznik();
  41. echo "Stronę tą odwiedzono ".$Licznik->pokazLicznik()." razy";
  42.  
  43. ?>
  44.  

co tu jest źle questionmark.gif
Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\obiektowy\test.php on line 33
czemu? może mi ktoś poprawić ten kod
Fifi209
Bo jeżeli wykonuje się destruktor to niszczy obiekt ($this) z tego co wiem.
Zyx
Panowie, z całym szacunkiem, ale powypisywaliście straszliwe głupoty. Obiekt niszczony jest po zakończeniu działania przez destruktor, to po pierwsze, a po drugie on tu akurat nie ma nic do rzeczy. I co ma niby kolejność jego napisania/wystąpienia do błędów?

Alessio -> Czy nie zastanowiłeś się, dlaczego błąd pojawia się dopiero w destruktorze, skoro teoretycznie powinien wywalić się wcześniej na fputs() i flock(), jeśli plik nie został otwarty? Przyjrzyj się nazwie konstruktora, bo na mój gust zjadłeś tam jedną literkę i on się po prostu nie wykonuje... smile.gif
Fifi209
Cytat(Zyx @ 16.10.2009, 21:41:09 ) *
Alessio -> Czy nie zastanowiłeś się, dlaczego błąd pojawia się dopiero w destruktorze, skoro teoretycznie powinien wywalić się wcześniej na fputs() i flock(), jeśli plik nie został otwarty? Przyjrzyj się nazwie konstruktora, bo na mój gust zjadłeś tam jedną literkę i on się po prostu nie wykonuje... smile.gif

Jestem ślepy, ale moim zdaniem ma dobrze jeżeli chodzi o konstruktor, w szczególności że się wykonuje kolego.
Zyx
Ech...

__contruct <---- tak ty napisałeś
__construct <---- tak wymaga PHP

Sprawdź dokładnie, bo Twoja metodologia testowania wydaje mi się mocno naciągana, albo masz jakieś dziwne PHP smile.gif.

PS. Uwaga ortograficzna: "TĘ stronę", a nie "TĄ stronę" 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.