Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]php błąd
Forum PHP.pl > Forum > Przedszkole
Johnny_Smithh
Witam serdecznie to mój pierwszy post. Uczę się projektowania obiektowego, dziś napisałem swój pierwszy skrypt jednak nie mogę ustawić przyczyny błędu bardzo proszę o pomoc smile.gif


  1.  
  2. <?php
  3.  
  4. class book
  5. {
  6. public $Tytul;
  7. public $Autor;
  8. public $Ilosc_Stron;
  9. public $Tematyka;
  10.  
  11. public function __construct($Tytul, $Autor)
  12. {
  13. $this->Tytul=$Tytul;
  14. $this->Autor->$Autor;
  15. }
  16.  
  17. public function getTytul ()
  18. {
  19. return $this->Tytul;
  20. }
  21.  
  22. public function getAutor($Autor)
  23. {
  24. $this->Autor = $Autor;
  25. }
  26.  
  27. public function getIlosc_Stron()
  28.  
  29. {
  30. return $this->Ilosc_Stron;
  31. }
  32.  
  33. public function getTematyka()
  34.  
  35. {
  36. return $this->Tematyka;
  37. }
  38.  
  39.  
  40. class fantasty_book extends book
  41. {
  42. }
  43.  
  44. class criminal_book extends book
  45. {
  46. }
  47.  
  48. $book1 = new fantasty_book('jakis tam tytul', 'jakis tam autor');
  49. $book2 = new criminal_book('jakis tam tutul inny', 'jakis tam inny autor');
  50.  
  51. echo ($book1, $book2);
  52.  
  53. }
  54. ?>
  55.  



a błąd mi wyskakuje taki : Parse error: syntax error, unexpected 'class' (T_CLASS), expecting function (T_FUNCTION) in C:\wamp\www\php\ksiazka.php on line 39

nie wiem co z tym zrobić, proszę o pomoc ;(
freemp3
Klamrę zamykającą z końca pliku przenieś nad klasę: fantasty_book
markonix
Klamra z linii 53 (na forum) co tam robi?
g2g3
W konstruktorze przypisujesz tylko wartości do odpowiednich pól, więc sama klasa Ci nic nie zwróci.

  1. $book = new Book('Testowy', 'Jadzia');
  2. echo $book->getTytul(); // out Testowy


Dodatkowo nie wiem po co masz metody do pobrania wartości pola z ilością stron, skoro ani nigdzie ich nie przypisujesz, a nie nie masz metod żeby je przypisać.
Johnny_Smithh
  1. <?php
  2.  
  3. class book
  4. {
  5. public $Tytul;
  6. public $Autor;
  7. public $Ilosc_Stron;
  8. public $Tematyka;
  9.  
  10. public function __construct($Tytul, $Autor)
  11. {
  12. $this->Tytul=$Tytul;
  13. $this->Autor->$Autor;
  14. }
  15.  
  16. public function getTytul ()
  17. {
  18. return $this->Tytul;
  19. }
  20.  
  21. public function getAutor($Autor)
  22. {
  23. $this->Autor = $Autor;
  24. }
  25.  
  26. public function getIlosc_Stron()
  27.  
  28. {
  29. return $this->Ilosc_Stron;
  30. }
  31.  
  32. public function getTematyka()
  33.  
  34. {
  35. return $this->Tematyka;
  36. }
  37.  
  38. }
  39. class fantasty_book extends book
  40. {
  41. }
  42.  
  43. class criminal_book extends book
  44. {
  45. }
  46.  
  47.  
  48. $book1 = new fantasty_book('Fantazy', 'Maciek');
  49. $book2 = new criminal_book('Kryrymynał', 'Mietek');
  50.  
  51. echo $book1;
  52. echo $book2;
  53.  
  54. ?>



aras785
Linia 13:
  1. $this->Autor->$Autor;

na:
  1. $this->Autor=$Autor;
freemp3
Linia 51: Nie możesz sobie od tak wyświetlić klasy. Jeśli chcesz, żeby coś wyświetlała powinieneś dodać do niej magiczną metodę __toString
phpion
Cytat(Johnny_Smithh @ 6.09.2013, 11:02:59 ) *
Witam serdecznie to mój pierwszy post.

Witam również, ale na przyszłość proszę nadać sensowne tematy swoim wątkom.
Johnny_Smithh
Cytat(phpion @ 6.09.2013, 11:48:43 ) *
Witam również, ale na przyszłość proszę nadać sensowne tematy swoim wątkom.



Ok, przepraszam.


Napisałem teraz tak, jednakże wyświetla mi tylko autora a tytułu już nie. Mogę prosić o jeszcze jakieś wskazówki ? tak jak napisałem na początku to mój pierwszy skrypt więc proszę o trochę zrozumienia i cierpliwości smile.gif


  1.  
  2. <?php
  3.  
  4. class book
  5. {
  6. public $Tytul;
  7. public $Autor;
  8. public $Ilosc_Stron;
  9. public $Tematyka;
  10.  
  11. public function __construct($Tytul, $Autor )
  12. {
  13. $this->Tytul=$Tytul;
  14. $this->Autor=$Autor;
  15. }
  16.  
  17. public function getTytul ()
  18. {
  19. return $this->Tytul;
  20. }
  21.  
  22. public function getAutor($Autor)
  23. {
  24. $this->Autor = $Autor;
  25. }
  26.  
  27. public function getIlosc_Stron()
  28.  
  29. {
  30. return $this->Ilosc_Stron;
  31. }
  32.  
  33. public function getTematyka()
  34.  
  35. {
  36. return $this->Tematyka;
  37. }
  38.  
  39. public function __toString()
  40.  
  41. {
  42. return $this->Autor;
  43. return $this->Tytul;
  44. return $this->Tematyka;
  45. }
  46.  
  47. }
  48.  
  49.  
  50. class fantasty_book extends book
  51. {
  52. }
  53.  
  54. class criminal_book extends book
  55. {
  56. }
  57.  
  58. $book1 = new fantasty_book('Ogiem i mieczem', 'Henryk Sienkiewicz', 6000, 'historyczna');
  59.  
  60. $book2 = new criminal_book('Wladca pierscieni', 'John Tolkien', 600, 'fantazy');
  61.  
  62. echo $book1;
  63. echo ("<br>");
  64. echo $book2;
  65.  
  66. ?>



freemp3
Polecenie return zwraca wartość z funkcji i kończy jej działanie, więc nie ma siły, żeby pozostałe 3 linijki się wykonały. Zamiast return zapisz wartości do jednej zmiennej i to ją zwróć jako wynik funkcji:
  1. public function __toString()
  2. {
  3. $wynik = '';
  4. $wynik .= $this->Autor;
  5. $wynik .= $this->Tytul;
  6. $wynik .= $this->Ilosc_Stron;
  7. $wynik .= $this->Tematyka;
  8.  
  9. return $wynik;
  10. }
Johnny_Smithh
Uporałem się z tym pozmieniałem trochę konstruktor ale teraz działa. Dzięki wszystkim za pomoc. Ma ktoś może jakieś uwagi jeszcze?

  1.  
  2. <?php
  3.  
  4. class book
  5. {
  6. public $Tytul;
  7. public $Autor;
  8. public $Ilosc_Stron;
  9. public $Tematyka;
  10.  
  11. public function __construct($Tytul, $Autor, $Ilosc_Stron, $Tematyka )
  12. {
  13. $this->Tytul=$Tytul;
  14. $this->Autor=$Autor;
  15. $this->Ilosc_Stron=$Ilosc_Stron;
  16. $this->Tematyka=$Tematyka;
  17.  
  18. }
  19.  
  20. public function setTytul ()
  21. {
  22. return $this->Tytul;
  23. }
  24.  
  25. public function getAutor($Autor)
  26. {
  27. $this->Autor = $Autor;
  28. }
  29.  
  30. public function setIlosc_Stron()
  31.  
  32. {
  33. return $this->Ilosc_Stron;
  34. }
  35.  
  36. public function setTematyka()
  37.  
  38. {
  39. return $this->Tematyka;
  40. }
  41.  
  42. public function __toString()
  43. {
  44. $wynik = '';
  45. $wynik .= $this->Autor;
  46. $wynik .= $this->Tytul;
  47. $wynik .= $this->Ilosc_Stron;
  48. $wynik .= $this->Tematyka;
  49.  
  50. return $wynik;
  51. }
  52.  
  53. }
  54.  
  55.  
  56. class fantasty_book extends book
  57. {
  58. }
  59.  
  60. class criminal_book extends book
  61. {
  62. }
  63.  
  64. $book1 = new fantasty_book('Ogiem i mieczem', 'Henryk Sienkiewicz', 6000, 'historyczna');
  65.  
  66. $book2 = new criminal_book('Wladca pierscieni', 'John Tolkien', 600, 'fantazy');
  67.  
  68.  
  69. echo $book1;
  70. echo ('</br>');
  71. echo $book2;
  72.  
  73.  
  74. ?>
  75.  
  76.  
aras785
zamień setIlosc na getIlosc i inne sety też pozamieniaj.
Johnny_Smithh
Już napisałem coś nowego o co chyba nie ma się przyczepić jednak jedynej rzeczy której nie rozumiem to o co chodzi z tą konwersją na Stringi


  1. <?php
  2.  
  3. class Komputer
  4. {
  5. public $Dysk;
  6. public $RAM;
  7. public $Procesor;
  8.  
  9. public function __construct ($Dysk, $RAM, $Procesor)
  10.  
  11. { $this->Dysk=$Dysk;
  12. $this->RAM=$RAM;
  13. $this->Procesor=$Procesor;
  14. }
  15.  
  16. public function setDysk ($Dysk)
  17. {
  18.  
  19. $this->Dysk=$Dysk;
  20. }
  21.  
  22. public function getDysk() {
  23.  
  24. return $this->Tytul;
  25. }
  26.  
  27. public function setRAM() {
  28.  
  29. $this->RAM=$RAM;
  30. }
  31. public function getRAM() {
  32.  
  33. return $this->RAM;
  34. }
  35.  
  36. public function setProcesor() {
  37.  
  38. $this->Procesor=$Procesor;
  39. }
  40.  
  41. public function getProcesor() {
  42.  
  43. return $this->Procesor;
  44. }
  45.  
  46. public function __toString()
  47. {
  48. $wynik = '';
  49. $wynik .= $this->Dysk;
  50. $wynik .= $this->RAM;
  51. $wynik .= $this->Procesor;
  52.  
  53. return $wynik;
  54. }
  55. }
  56. class NowyKomputer extends Komputer
  57. {
  58. }
  59.  
  60. $Komputer1 = new NowyKomputer ('sata', ' intel', ' atlon');
  61.  
  62. echo $Komputer1;
  63.  
  64.  
  65. ?>
freemp3
Chodzi o to, że klasa może zawierać różne dane. Metoda __toString pozwala na wyświetlenie tych elementów klasy, które chcemy i w takiej formie jak nam jest wygodniej. Poczytaj w manualu o metodach magicznych.
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.