Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa tworząca strone
Forum PHP.pl > Inne > Oceny
tonapewno
stworzyłem skrypt(bardzo prosty) który działa tak jak chcę, ale zastanawiam się czy jest on poprawny i czy tworzenie strony w taki sposób jest dobrym rozwiązaniem? Znalazłem kilka linków w google, ale nie znalazłem na nich jednoznacznej odpowiedzi, która by mnie satysfakcjonowała. Mam nadzieje, że ktoś z Was wyjaśni czy to jest dobry/złe i dlaczego?

  1. class pages {
  2. public $keywords;
  3. public $descriptions;
  4. public $page_title;
  5. public $pages_content;
  6. public $foot_content;
  7. public $menu = array();
  8.  
  9. public function create_header(){
  10. ?>
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  12.  
  13. <html>
  14. <head>
  15. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  16. <meta http-equiv="Content-Language" content="pl" />
  17. <meta name="Description" content="<?php print $this->descriptions; ?>" />
  18. <meta name="Keywords" content="<?php print $this->keywords; ?>" />
  19.  
  20. <title><?php print $this->page_title; ?></title>
  21. </head>
  22. <?php
  23. }
  24.  
  25. private function create_menu(){
  26. $count_numb = count($this->menu);
  27. print "<ul>";
  28. for($i = 0; $i < $count_numb; $i++){
  29. print "<li>".$this->menu[$i]."</li>";
  30. }
  31. print "</ul>";
  32. }
  33.  
  34. public function create_body(){
  35. ?>
  36. <body>
  37. <?php self::create_menu(); print $this->pages_content; ?>
  38.  
  39. <?php
  40. }
  41.  
  42. public function create_foot(){
  43. ?>
  44. <?php print $this->foot_content; ?>
  45. </body></html>
  46. <?php
  47. }
  48. }


PS. Wiem że ta strona brzydko wygląda, ale nie zależało mi na wyglądzie, a na funkcjonalności. Prosiłbym żeby odpowiedzi pomogły mi w jakiś sposób.
askone
Dobrze że ta "klasa" spełnia Twe oczekiwania, jednak na 100% nie jej konstrukcja nie jest właściwa... Czego brakuje co jest źle:
  • Wszystkie składowe klasy są publiczne - dlaczego?
  • Pomieszanie kodu php z html
  • Brak znaczników meta, script, css
  • Nazwa klasy sugeruje iż jest to kolekcja obiektów Page - a tak nie jest...


Póki co tyle...

Pozdrawiam
Cysiaczek
Po testach jestem nawet zaskoczony, bo ta klasa działa, w co powątpiewałem smile.gif
scanner
Świeże podejście do OOP i szablonów, aczkolwiek maksymalnie błędne.
tonapewno
scanner, Cysiaczek jeśli widzicie inne błędy niż te które wskazał askone to pokażcie i powiedzcie dlaczego błąd i na kieruj na poprawne rozwiązanie bo takie komentarze jak te nic mi nie pomagają w rozwijaniu się, a na tym mi zależy najbardziej wink.gif
erix
Podstawowy błąd - dlaczego mieszasz logikę z widokiem?
pain3hp
Zmieniłbym te metody na statyczne. Ta klasa jest równoznaczym rozwiązaniem z trzymaniem tych kodów (metod) w plikach i includowaniem w odpowiednich miejscach.
Usunąłbym także pola i informacje które w nich trzymasz wrzucił do argumentów funkcji, wtedy przy wywoływaniu metod bedziesz pisał mniej kodu (a chyba o to chodzi?)
tonapewno
erix odpowiadając na Twoje pytanie, chyba dlatego że jeszcze nie potrafię w inny sposób napisać poprawnego kodu i chcę właśnie abyście mi pomogli to poukładać i wyjaśnić popełnione przeze mnie błędy.

pain3hp dziękuje za tą uwagę wink.gif na pewno się zastosuję do niej i poprawie kod.
Daiquiri
Zastanawia mnie tylko, po co na siłę piszesz to obiektowo. Myślę, że w przedstawionym przykładzie obiektowość ma marne zastosowanie. Nie rozumiem też, po co zamieniać "metody na statyczne". Niczego to kwestii poprawności mieszaniny wszystkiego co możliwe razem - nie zmieni. To, że zbiór funkcji zawierających pętle z "generowaniem" formularzy wstawisz w klasę i z całości zrobisz obiekt nie sprawi, że całość będzie miała sens w kontekście OOP.

Domyślam się, że chcesz po prostu przejść z pisania kodu strukturalnego na obiektowy smile.gif. Jednak OOP to coś więcej niż tworzenie obiektów byle by były. Osobiście w ramach nauki OOP, zaczęłabym raczej od pisania czegoś na kształt modeli w MVC. Nawet jeżeli pisana przeze mnie logika biznesowa w pokraczny sposób miałaby się potem łączyć z resztą kodu - zawsze ta obiektowość będzie na wyższym poziomie smile.gif.
tonapewno
Daiquiri tak jak napisałeś chce "po prostu przejść z pisania kodu strukturalnego na obiektowy" i chciałem napisać coś i dać do oceny po to aby zobaczyć jakie błędy popełniam, gdzie moje rozumowanie w OOP jest błędne, ewentualnie poprawić kod, a najbardziej zleży mi na tym aby dowiedzieć się czegoś co może mi pomóc w dalszej nauce OOP, skoro uważasz, że lepszym rozwiązaniem w ramach nauki OOP jest napisanie "czegoś na kształt modeli w MVC" to chyba tak zrobię. wink.gif wielkie dzięki za zainteresowanie i czekam na dalsze opinie.
frytek92
Pomieszanie logiki z widokiem to mały problem, wiekszym problemem jest ograniczona funkcjonalność tej klasy załóżmy ze chce załadować pare skryptów javascript, dodać 2 style, do body dodać parametry to wtedy musimy edytować kod PHP wiec wychodzi na to że klasa jest bardzo, bardzo ograniczona bo wydaje mi sie ze prawdziwe OOP powinno być barzdziej elastyczne bez koniecznosci modyfikowania klasy.
tonapewno
frytek92 mi chodziło o to żeby przedstawić jak ja "programuje" obiektowo i dać skrypt do oceny, a takie funkcje jak dodawanie kilku znaczników dla stylu, javascriptu itp. są dla mnie w tym momencie mniej istotne.
awerd95
tonapewno miłej lektury życzę http://pl.wikibooks.org/wiki/PHP/Czym_jest...ie_obiektowe%3F
tonapewno
awerd95 to już czytałem, a po za tym nie prosiłem o linki, umiem korzystać z googla
guilty82
Jeśli chcesz pisać obiektowo to spróbuj jakiegoś frameworka. Codeigniter albo Kohana będą chyba dobre na początek.
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-2024 Invision Power Services, Inc.