Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Tworzenie szablonu obiektowo?
Edgrim
post 4.06.2017, 17:10:18
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.06.2017

Ostrzeżenie: (0%)
-----


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

Ten post edytował Edgrim 4.06.2017, 17:25:24
Go to the top of the page
+Quote Post
Tomplus
post 4.06.2017, 19:42:43
Post #2





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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. }

Go to the top of the page
+Quote Post
Edgrim
post 4.06.2017, 19:56:28
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.06.2017

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Tomplus
post 5.06.2017, 05:33:41
Post #4





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:37