Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] operacje na stringach, pliki
Forum PHP.pl > Forum > Przedszkole
neoangin
Witam,
  1. class zamien
  2. {
  3. function zam($path, $co, $naco)
  4. {
  5. $handle = fopen($this->path, "r+");
  6. $contents = fread($handle, filesize($this->path));
  7. $nowy = str_replace($this->co, $this->naco, $contents);
  8. rewind($handle);
  9. fwrite($handle, $nowy);
  10. fclose($handle);
  11. }
  12. }
  13.  
  14. $zamm = new zamien();
  15. $pierwszy = $zamm->zam("text.txt", "a", "A");


Wyrzuca takie bledy:

Notice: Undefined property: zamien::$path in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 7

Warning: fopen() [function.fopen]: Filename cannot be empty in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 7

Notice: Undefined property: zamien::$path in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 8

Warning: fread() expects parameter 1 to be resource, boolean given in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 8

Notice: Undefined property: zamien::$co in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 9

Notice: Undefined property: zamien::$naco in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 9

Warning: rewind() expects parameter 1 to be resource, boolean given in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 10

Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 11

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\wamp\www\php_obiektowy\czytanie_i_zamiana.php on line 12

A jak dam to nie w klasie:
  1. $path = "text.txt";
  2. $handle = fopen($path, "r+");
  3.  
  4. $contents = fread($handle, filesize($path));
  5. echo $contents;
  6. echo "<br />";
  7. echo "Po:<br />";
  8. $nowy = str_replace("a","A",$contents);
  9. echo $nowy;
  10. rewind($handle);
  11. fwrite($handle,$nowy);
  12. fclose($handle);
  13.  

To jest okej wszystko i skrypt sie wykonuje - czy ktoś coś zaradzi?
wookieb
Komunikaty są dość jasne. Jak nie umiesz angielskiego to przepuść je przez translator i się do nich zastosuj.
Berg
Nie wiem gdzie czytałeś o obiektówce ale zdecydowanie nie doczytałeś. Do argumentów metody nie odwołujesz się przez $this tylko jak do normalnej zmiennej... Czyli zamiast np. $this->path powinno być $path.

Tak na marginesie to po co upychasz jedną metodę w klasę? Jeśli już koniecznie chcesz stosować OOP to ta metoda powinna być raczej statyczna.
zordon
wszystko masz napisane jak na dłoni.
ten kod to przerabianie na siłę kodu proceduralnego na obiektowy lub odwrotnie. Albo zrezygnuj z klasy i posługuj się parametrami, które przekazujesz do funkcji, albo przekaż te parametry do konstruktora klasy, przypisz do właściwości i dopiero operuj na właściwościach.
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.