Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP OOP MVC jakie elementy gdzie?
Forum PHP.pl > Forum > PHP
boras87
Witam

Zabieram się za stworzenie aplikacji zgodnie ze standardem MVC i przyznam, że idzie mi dość topornie bo nie ma za wiele materiału w tej dziedzinie szczególnie dla raczkujących.

Ale jakbyście mogli przy podanym kodzie określić jakie elementy powinien mieć każdy z komponentów tzn widok kontroler oraz model.

Proszę bardzo ogólnikowo... tzn czy na przykład funkcja _set powinna być w widoku czy w kontrolerze

albo czy zmienna tablicowa $przyciski powinna być w widoku czy może w module?

Z góry dzięki za każda pomoc.

  1. <?php
  2. class Widok
  3. {
  4.  
  5. // atrybuty klasy Strona
  6. public $zawartosc;
  7. public $tytul = 'TLA CONSULTING';
  8. public $slowa_kluczowe = 'TLA Consulting, Tutaj Atrybuty,
  9. niektore z moich najlepszych przyjaciolek to wyszukiwarki';
  10. public $przyciski = array('Strona glowna' => '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=\"".htmlentities($this->slowa_kluczowe)."\" />";
  44. }
  45. public function WyswietlStyle()
  46. {
  47. ?>
  48. <style>
  49. <!--
  50. body {background-color: white}
  51. h1 {color:white; font-size:24pt; text-align:center;
  52. font-family:arial,sans-serif}
  53. .menu {color:white; font-size:12pt; text-align:center;
  54. font-family:arial,sans-serif; font-weight:bold}
  55. td {background:black}
  56. p {color:black; font-size:12pt; text-align:justify;
  57. font-family:arial,sans-serif}
  58. p.foot { color:white; font-size:9pt; text-align:center;
  59. font-family:arial,sans-serif; font-weight:bold}
  60. a:link,a:visited,a:active {color:white}
  61. -->
  62. </style>
  63. <?php
  64. }
  65. public function WyswietlNaglowek()
  66. {
  67. ?>
  68. <table width="100%" cellpading="12" cellspacing="0" border="0">
  69. <tr bgcolor="black">
  70.  
  71. <td>
  72. <h1>TLA Consulting</h1>
  73. </td>
  74.  
  75. </tr>
  76. </table>
  77. <?php
  78. }
  79.  
  80. public function WyswietlMenu($przyciski)
  81. {
  82. echo "<table width = '100%' bgcolor = 'white' cellpadding = '4' cellspacing = '4'\n";
  83. echo " <tr>\n";
  84.  
  85. //obliczenie wielkosci przycisku
  86. $szerokosc = 100/count($przyciski);
  87.  
  88. foreach ($przyciski as $nazwa=>$url)
  89. {
  90. $this->WyswietlPrzycisk($szerokosc, $nazwa, $url,
  91. !$this->CzyToAktualnyURL($url));
  92. }
  93. echo " </tr>\n";
  94. echo "</table>\n";
  95. }
  96.  
  97. public function CzyToAktualnyURL($url)
  98. {
  99. if(strpos($_SERVER['PHP_SELF'], $url)==false)
  100. {
  101. return false;
  102. }
  103. else
  104. {
  105. return true;
  106. }
  107. }
  108.  
  109. public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active = true)
  110. {
  111. if($active)
  112. {
  113. echo "<td width = '".htmlentities($szerokosc)."%'>
  114. <a href = '".htmlentities($url)."'>
  115. <img src = 'm-logo.gif' alt = '".htmlentities($nazwa)."' border = '0'></a>
  116. <a href = '".htmlentities($url)."'><span class='menu'>$nazwa</span></a></td>";
  117. }
  118. else
  119. {
  120. echo "<td width = '".htmlentities($szerokosc)."%'>
  121. <img src = 'boczne-logo.gif'>
  122. <span class='menu'>$nazwa</span></td>";
  123. }
  124. }
  125.  
  126. public function WyswietlStopke()
  127. {
  128. ?>
  129. <table width="100%" bgcolor="black" cellpading="12" border="0">
  130. <tr>
  131. <td>
  132. <p class="foot">&copy; TLA Consulting</p>
  133. <p class="foot">Prosimy odwiedzic
  134. <a href ="prawne.php">strone informacji prawnych</a></p>
  135. </td>
  136. </tr>
  137. </table>
  138. <?php
  139. }
  140. }
  141. ?>
jaslanin
Wyswietl - widok template
Wyswietl... itd. - widok
CzyToAktualnyURL - helper, używany w kontrolerze.
$tytul, $slowa_kluczowe, - kontroler
$przyciski -helper

wywalić z widoków funkcje takie jak np. htmlentities i robić to w modelu lub kontrolerze
Z widoków WyswietlPrzycisk, WyswietlMenu wywalić logikę czyli:

  1. $szerokosc = 100/count($przyciski);


  1. if($active)
(można by zostawić, ale lepiej podzielić na dwa, np robiąc helpery do wyświetlania przycisku)

__set jest aktualnie niepotrzebna bo działa tak jak domyślne przypisywanie właściwości klasy w php.

przez helpery rozumiem funkcje statyczne.
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.