Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przemycanie parametru do destruktora
Forum PHP.pl > Forum > Przedszkole
fiszol
Cześć.
Chcę napisać prostą klasę do operacji na plikach, w konstruktorze otwieram plik z żądanym parametrem i zwracam go w zmiennej (return $handle). W destruktor chciałem wsadzić fclose($handle), ale w deklaracji destruktora nie można podać żadnego parametru... Na chwilę obecną wygląda to tak:
  1. <?php
  2. class FileHandler{
  3. public $handle;
  4. function __consruct($file,$att = null)
  5. {
  6. if(file_exists($file) && is_readable($file))
  7. {
  8. switch($att)
  9. {
  10. default:
  11. $handle = fopen($file,"rb");
  12. break;
  13. case "write":
  14. $handle = fopen($file,"wb");
  15. break;
  16. }
  17. return $handle;
  18. }
  19. else
  20. {
  21. echo "File ".$file." does not exist or is unreadable";
  22. }
  23. }
  24. function write_file($file,$data)
  25. {
  26. if(!fwrite($handle,$data))
  27. {
  28. echo "Failed to write ".$data." into ".$file;
  29. }
  30. }
  31. function __destruct()
  32. {
  33. fclose($handle);
  34. }
  35. }
  36. ?>

Destruktor oczywiście wywala notice o niezdefiniowanej $handle oraz warninga o tym że fclose() nie ma co zamknąć.
Jak to rozwiązać?
lobopol
Zamień wszędzie handle na $this->handle, po co deklarujesz zmienną której nie używasz?
greycoffey
Człowieku, to nie ma nic wspólnego z programowaniem obiektowym. To tylko nakładka, dzięki której zapomnisz o handlerach i opcjach fopen. Zresztą są file_get_contents i file_put_conetnts.
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.