Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Strona na klasach error
Forum PHP.pl > Forum > PHP
bigos1995-95
Witam, mam dwa pliki strona.inc i glowna.php . Oczywiscie oba pliki sa połączone funkcja require i gdy odpalam strona.inc w glowna.php wyrzuca mi błąd Fatal error: Call to undefined method Strona::WyswietlMenu() in C:\wamp\www\bigos\tbl\strona.inc on line 30. Mógłby mi ktoś powiedzieć co tu jest źle ?


strona.inc
  1. <?php
  2. class Strona
  3. {
  4.  
  5. // atrybuty klasy Strona
  6. public $zawartosc;
  7. public $tytul = "TLA CONSULTING";
  8. public $slowa_kluczowe = "TLA Consulting, Tutaj Lubią Atrybuty,
  9. niektóre z moich najlepszych przyjaciółek to wyszukiwarki";
  10. public $przyciski = array("Strona główna" => "glowna.php",
  11. "Kontakt" => "kontakt.php",
  12. "Usługi" => "uslugi.php",
  13. "Mapa strony" => "mapa.php"
  14. );
  15. // operacje klasy Strona
  16.  
  17. public function __set($nazwa, $wartosc)
  18. {
  19. $this->$nazwa = $wartosc;
  20. }
  21.  
  22. public function Wyswietl()
  23. {
  24. echo "<html>\n<head>\n";
  25. $this->WyswietlTytul();
  26. $this->WyswietlSlowaKluczowe();
  27. $this->WyswietlStyle();
  28. echo "</head>\n<body>\n";
  29. $this->WyswietlNaglowek();
  30. $this->WyswietlMenu($this->przyciski);
  31. echo $this->zawartosc;
  32. $this->WyswietlStopke();
  33. echo "</body>\n</html>\n";
  34. }
  35.  
  36. public function WyswietlTytul()
  37. {
  38. echo "<title> $this->tytul </title>";
  39. }
  40.  
  41. public function WyswietlSlowaKluczowe()
  42. {
  43. echo "<meta name=\"keywords\" content=\"".$this->slowa_kluczowe."\" />";
  44. }
  45.  
  46. public function WyswietlStyle()
  47. {
  48. ?>
  49. <style>
  50. h1 {
  51. color:white; font-size:24pt; text-align:center;
  52. font-family:arial,sans-serif
  53. }
  54. .menu {
  55. color:white; font-size:12pt; text-align:center;
  56. font-family:arial,sans-serif; font-weight:bold
  57. }
  58. td {
  59. background:black
  60. }
  61. p {
  62. color:black; font-size:12pt; text-align:justify;
  63. font-family:arial,sans-serif
  64. }
  65. p.foot {
  66. color:white; font-size:9pt; text-align:center;
  67. font-family:arial,sans-serif; font-weight:bold
  68. }
  69. a:link,a:visited,a:active {
  70. color:white
  71. }
  72. </style>
  73. <?php
  74. }
  75.  
  76. public function WyswietlNaglowek()
  77. {
  78. ?>
  79. <table width="100%" cellpadding="12" cellspacing="0" border="0">
  80. <tr bgcolor="black">
  81. <td align="left"><img src="logo.gif" /></td>
  82. <td>
  83. <h1>TLA Consulting</h1>
  84. </td>
  85. <td align="right"><img src="logo.gif" /></td>
  86. </tr>
  87. </table>
  88. <?
  89. }
  90.  
  91. public function WyswietlMenu($przyciski)
  92. {
  93. echo "<table width = \"100%\" bgcolor = \"white\" cellpadding = \"4\" cellspacing = \"4\">\n";
  94. echo " <tr>\n";
  95.  
  96. //obliczenie wielkości przycisku
  97. $szerokosc = 100/count($przyciski);
  98.  
  99. foreach ($przyciski as $nazwa=>$url)
  100. {
  101. $this->WyswietlPrzycisk($szerokosc, $nazwa, $url,
  102. !$this->CzyToAktualnyURL($url));
  103. }
  104. echo " </tr>\n";
  105. echo "</table>\n";
  106. }
  107.  
  108. public function CzyToAktualnyURL($url)
  109. {
  110. if(strpos($_SERVER['PHP_SELF'], $url)==false)
  111. {
  112. return false;
  113. }
  114. else
  115. {
  116. return true;
  117. }
  118. }
  119.  
  120. public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active = true)
  121. {
  122. if($active) {
  123. echo "<td width = \"".$szerokosc."%\">
  124. <a href = \"".$url."\">
  125. <img src = \"m-logo.gif\" alt = \"".$nazwa."\" border = \"0\"></a>
  126. <a href = \"".$url."\"><span class=\"menu\">".$nazwa."</span></a></td>";
  127. } else {
  128. echo "<td width = \"".$szerokosc."%\">
  129. <img src = \"boczne-logo.gif\">
  130. <span class=\"menu\">".$nazwa."</span></td>";
  131. }
  132. }
  133.  
  134. public function WyswietlStopke()
  135. {
  136. ?>
  137. <table width="100%" bgcolor="black" cellpading="12" border="0">
  138. <tr>
  139. <td>
  140. <p class="foot">&copy; TLA Consulting</p>
  141. <p class="foot">Prosimy odwiedzić
  142. <a href ="">stronę informacji prawnych</a></p>
  143. </td>
  144. </tr>
  145. </table>
  146. <?php
  147. }
  148. }
  149. ?>





glowna.php
  1. <?php
  2. require("strona.inc");
  3.  
  4. $stronaglowna = new Strona();
  5.  
  6. $stronaglowna->zawartosc = "<p>Witamy na stronie TLA Consulting.
  7. Prosimy o poświęcenie czasu i poznanie nas.</p>
  8. <p>Specjalizujemy się w zaspokajaniu potrzeb biznesowych
  9. i mamy nadzieję na współpracę.</p>";
  10. $stronaglowna->Wyswietl();
  11. ?>




klocu
Programowanie obiektowe, a na siłę pakujesz tu kod html do środka.
Jakiś system szablonów byłby mile widziany.

Po drugie - wszystko public, a 3/4 rzeczy wywołujesz w ramach wnętrza klasy.
Czy wszystkie obiekty muszą zwracać coś przez echo? Jak już chcesz tak to niech zwracają wynik wykonania funkcji przez return, a echo niech robi jedna metoda.
  1. public function WyswietlStyle()

zrzuć to do pliku zewnętrznego, a nie ładuj bezpośrednio w kod.

--
A co do błędu - jeśli nie widzi to może coś mu przeszkadza w otwieraniu i zamykaniu znaczników tzw. short tag?
bigos1995-95
Ja nie jestem autorem tego kodu więc pomińmy takie sprawy jak znaczniki html w środku klasy i inne. Interesuje mnie tylko i wyłącznie rozwiązanie problemu z widocznym błędem "Fatal error: Call to undefined method Strona::WyswietlMenu() in C:\wamp\www\bigos\tbl\strona.inc on line 30" wiem ze w linijce 30 znajduje się wywołanie funkcji z linijki 91 ale moim zdaniem jest tam wszystko dobrze a jednak błąd dalej widnieje wiec już ręce mi opadły i nie wiem co jest źle ;/

mógłby mi ktoś odpisaćquestionmark.gif
nospor
W kodzie masz jedno występienie: <?
zamień to na: <?php
bigos1995-95
dokładnie tutaj był ten błąd, dzieki
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.