Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Klasa i jej pola
pjamalia
post 1.11.2009, 12:50:23
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 1.11.2009

Ostrzeżenie: (0%)
-----


Witam

Jestem początkujący w PHP jeżeli chodzi o obiektowość. Proszę o pomoc. Zrobiłem sobie taką banalną klasę i jak mogę zadeklarować pola i ustawić ich wartości w konstruktorze żeby metoda wywołana w pliku tej klasy zadziałała. Oto klasa:

  1. <?php
  2. class Licznik
  3. {
  4. // właściwości
  5. public $qwe;
  6. public $nazwa_pliku;
  7. // konstruktor
  8. public function _construct()
  9. {
  10. $this->qwe=0;
  11. $this->nazwa_pliku = "licznik.txt";
  12. }
  13. // metody, funcjie
  14. function Plik_zapis($licznik)
  15. {
  16. $nazwa_pliku = "licznik.txt";
  17. $plik = fopen($nazwa_pliku,"w+");
  18. //rewind($plik);
  19. $licznik++;
  20. fwrite($plik, $licznik);
  21. fclose($plik);
  22. //echo "Licznik utworzony";
  23. }
  24. function Plik_odczyt()
  25. {
  26. $nazwa_pliku = "licznik.txt";
  27. $plik = fopen($nazwa_pliku,"r");
  28. //fread($plik, 1024);
  29. while(!feof($plik))
  30. {
  31. $linia = fgets($plik,1024);
  32. echo "Licznik odwiedzin na tej stronie: ".$linia;
  33. Plik_zapis($linia++);
  34. }
  35. fclose($plik);
  36. }
  37.  
  38. function Spr_plik()
  39. {
  40. $nazwa_pliku = "licznik.txt";
  41. if(!file_exists($nazwa_pliku))
  42. {
  43. $qwe++;
  44. Plik_zapis($qwe);
  45. }
  46. else
  47. {
  48. Plik_odczyt();
  49. }
  50. }
  51. }
  52. ?>


Oto plik w którym wywołuję metodę klasy:
  1. // Przywołanie z klasy LICZNIK
  2. require_once('class.LICZNIK.php');
  3. $licznik = new Licznik();
  4. $licznik->qwe=0;
  5. $licznik->Spr_plik();


Jak uruchamiami to wywala mi taki błąd:

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\usr\krasnal\www\galeria\class.LICZNIK.php on line 6

dzięki i czekam na pomoc
Go to the top of the page
+Quote Post
wookieb
post 1.11.2009, 12:57:04
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Raz masz tak
  1. $this->nazwa_pliku = "licznik.txt";


A raz tak
  1. $nazwa_pliku

Zdecyduj się. Poprawna jest forma 1. Ale chyba najpierw manual dotyczący klas warto by było przejrzeć co nie?

Ten post edytował wookieb 1.11.2009, 12:57:49


--------------------
Go to the top of the page
+Quote Post
Crozin
post 1.11.2009, 12:57:20
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1) Używasz PHP4 (zamiast 5)
2) W metodach Plik_* zamiast odnośić się pól klasy ($this->qwe/nazwa_pliku) tworzysz zmienne lokalne i operujesz na nich - a tego chyba nie chciałeś.
Go to the top of the page
+Quote Post
pjamalia
post 1.11.2009, 13:03:16
Post #4





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 1.11.2009

Ostrzeżenie: (0%)
-----


Dzięki, już poprawiłem:

  1. <?php
  2. class Licznik
  3. {
  4. // właściwości
  5. var $qwe;
  6. var $nazwa_pliku;
  7. // konstruktor
  8.  
  9. function _construct()
  10. {
  11. $this->qwe=0;
  12. $this->nazwa_pliku = "licznik.txt";
  13. }
  14. // metody, funcjie
  15. function Plik_zapis($licznik)
  16. {
  17. $nazwa_pliku = "licznik.txt";
  18. $plik = fopen($nazwa_pliku,"w+");
  19. //rewind($plik);
  20. $licznik++;
  21. fwrite($plik, $licznik);
  22. fclose($plik);
  23. //echo "Licznik utworzony";
  24. }
  25. function Plik_odczyt()
  26. {
  27. $nazwa_pliku = "licznik.txt";
  28. $plik = fopen($nazwa_pliku,"r");
  29. //fread($plik, 1024);
  30. while(!feof($plik))
  31. {
  32. $linia = fgets($plik,1024);
  33. echo "Licznik odwiedzin na tej stronie: ".$linia;
  34. $this->Plik_zapis($linia++);
  35. }
  36. fclose($plik);
  37. }
  38.  
  39. function Spr_plik()
  40. {
  41. $nazwa_pliku = "licznik.txt";
  42. if(!file_exists($nazwa_pliku))
  43. {
  44. $this->qwe++;
  45. $this->Plik_zapis($this->qwe);
  46. }
  47. else
  48. {
  49. $this->Plik_odczyt();
  50. }
  51. }
  52. }
  53. ?>
Go to the top of the page
+Quote Post
wookieb
post 1.11.2009, 13:05:41
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie poprawiłeś.


--------------------
Go to the top of the page
+Quote Post
phpion
post 2.11.2009, 08:26:10
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Do tego nie _construct, a __construct (2 _ na początku).
Go to the top of the page
+Quote Post
cojack
post 2.11.2009, 10:37:01
Post #7





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


I nie miałeś robić tak:

  1. $nazwa_pliku = "licznik.txt";


tylko tak:

  1. if(!file_exists($this->nazwa_pliku))


i nie:
  1. var $nazwa_pliku;


tylko

  1. private $nazwa_pliku;


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
phpion
post 2.11.2009, 11:23:26
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(cojack @ 2.11.2009, 11:37:01 ) *
i nie:
  1. var $nazwa_pliku;


tylko

  1. private $nazwa_pliku;

Cytat(pjamalia @ 1.11.2009, 13:50:23 ) *
Jak uruchamiami to wywala mi taki błąd:

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\usr\krasnal\www\galeria\class.LICZNIK.php on line 6

Czytaj proszę cały temat jeśli chcesz udzielać pomocy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:46