Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Tworzenie szablonu obiektowo?
Forum PHP.pl > Forum > Przedszkole
Edgrim
Mam takie dziwne pytanie, a nawet nie wiem jak to nazwać
Wymyśliłem sobie, że wsadzę całą stronę do zmiennej i będę ją wyświetlał na koniec
Wygląda to mniej więcej tak
  1. class document{
  2. private $div1='';
  3. private $div2='';
  4. private $div3='';
  5. private $document_type='';
  6. private $no_session='tutaj szablon html zawierający coś takiego {div1} {div2} {div3}';
  7. private $session='to samo co wyzej tylko inne zmienne';
  8. function __construct($type='no_session'){
  9. $this->document_type = $this->$type;
  10. //tutaj hashowanie tych div1, div2 itd, zeby nikt tego przypadkiem nie podmienil
  11. }
  12. function div1($text=''){
  13. if(empty($this->div1)){
  14. $this->div1= $this->div1.$text;
  15. } else {
  16. $this->div1= $this->div1."
  17. ".$text;
  18. }
  19. }
  20. function show_document(){
  21. $this->document_type = str_replace(hasniety({div1}), $this->div1, $this->document_type);
  22. echo $this->document_type;
  23. }
  24. }
  25. //wywolanie
  26. $sth= new document('no_session');
  27. $sth->div1('text');
  28. $sth->div2('text');
  29. $sth->div1('text2');
  30. $sth->show_document();
  31.  

Zawsze dołączałem pliki typu top/menu/footer w jakichs tam kolejnosciach i pomyślałem, że może to byłoby lepsze, ale nigdy nie widziałem takiej praktyki
Może mi ktoś powiedzieć czy takie coś ma sens? Czy raczej wrócić do dołączanie top/menu/footer czy może są jeszcze jakieś inne normalniejsze metody tworzenia czegoś takiego?
Ta zmienna na koniec będzie dość spora coś koło 2k linijek wydaje mi się, że jest to mało optymalne...

Edit:
Dodam, że finalnie wyjdą jakieś 4 szablony, a dla każdego inne ułożenie strony tylko dane podobne
Tomplus
Zastanawiam się jak chcesz wyświetlić treść w tej linijce:
  1. str_replace(hasniety({div1}), $this->div1, $this->document_type);


jezeli wkładasz do 1 argumentu zahashowaną treść (w sumie nie wiem po co, na jakim etapie ktoś ma Ci to podmienić?) to nie zamienisz swoich zmiennych na konkretną treść.

Jest także mało-obiektowe, umieszczanie kodu HTML wewnatrz klasy, szczególnie szablonów HTML.
  1. private $no_session='tutaj szablon html zawierający coś takiego {div1} {div2} {div3}';
  2. private $session='to samo co wyzej tylko inne zmienne';


Nie lepiej stworzyć sobie jaką metodę która pobierze sobie np. z pliku szablon?

  1. private function getTemplates($session = true) {
  2. if($session === true) {
  3. return file_get_contents('template1.html');
  4. } else {
  5. return file_get_contents('template2.html');
  6. }
  7. }

Edgrim
Tzn ja mam to zrobione, teraz tylko pisałem tak żeby mniej więcej pokazać obraz jak to działa.
Chciałem opinii czy jest sens coś takiego wgl robić...

W odpowiedzi na Twoje pytanie co do hashowania to jeżeli użytkownik wprowadzi nawet przypadkiem nazwę diva w klamrach bez hashu to w tym miejscu to podmieni na cały content... Napisaem tam jakiś kod do tego, nie chce mi się tego przepisywać bo nie o to chodzi smile.gif
Tomplus
To w takim razie masz błąd.

Zrób inaczej, zastosuj inne brackety dla systemowego szablonu, a inne dla treści dla użytkowników.
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.