Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Subsekcje w szablonach
Rudi1204
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 11.03.2007

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


Witam w php siedzę jakiś czas, ale mimo to nie ogarniam do końca sprawy klas, a to do pisania silnika szablonów chyba jest podstawa no nie??

Mianowicie już jakiś czas temu znalazłem na stronie museum.webcity.pl artykuł jak stworzyć własny mechanizm szablonów. Całkiem niezły i przyjazny, ale na dłuższą metę jemu coś brakuje no właśnie "subsekcji". Zabrałem się za to ale patrząc na to ze kuleje z klas rozłożyłem na końcu ręce.

Na forum znalazłem takie coś
plik index.php
  1. <?php
  2. $tablica['{$div}'] = 'to jest div';
  3. $tablica['{$p}'] = 'to jest p';
  4.  
  5.  
  6. $html = file_get_contents('./tpl/main_index.html');
  7.  
  8.  
  9. foreach($tablica as $nazwa=>$wartosc)
  10. {
  11.  $html = str_replace($nazwa,$wartosc,$html);
  12. }
  13.  
  14. echo $html;
  15. ?>


plik main_index.html
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. <title>Untitled Document</title>
  5. </head>
  6. <body>
  7. <div style="border:1px solid red; padding:5px;">
  8. {$div}
  9. </div>
  10. <ul>
  11. <!-- test -->
  12. <li><p style="border:1px solid blue; padding:5px;">{$p}</p></li>
  13. <!-- /test -->
  14. </ul>
  15. </body>
  16. </html>


Starałem się jakoś dojść do tego jak podmieniać zakres od <!-- test --> do <!-- /test --> i wrzucić to w pętle by zrobić listing ale nie udało mi się. Jedyne do czego doszłem to jak zmienić cały zakres a mianowicie poprzez dodanie przed pętla takiego czegoś:
  1. <?php
  2. $html = preg_replace("/<!-- test -->.*?<!-- /test -->/si", '<hr />', $html);
  3. ?>


Czy ma ktoś może jakieś propozycje, porady etc... jak to ugryźć??

Ten post edytował Rudi1204 12.04.2009, 10:50:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Takie coś realizuje się, kompilując szablony do kodu PHP, bo "manualna" obsługa pętli nie dość, że jest masakryczna, to jeszcze powolna. W ten sposób, jak zauważył Mati, działa zdecydowana większość przyzwoitych parserów oferujących coś więcej, niż tylko zamianę zmiennych, ale na pewno nie jest to żadna przesłanka do tego, że PHP jest w jakiś sposób lepsze. Dedykowany język dla systemu szablonów tworzony jest z tego samego powodu, dla którego ktoś kiedyś wpadł na pomysł, że strony WWW można robić w czymś innym, niż C/C++/assembler.

Wprawdzie takie języki najczęściej de facto są kopią PHP, tj. cała kompilacja sprowadza się do "zamień ifa w klamerkach na ifa w PHP" (gdyż jest to w sumie najprostsze do osiągnięcia), ale ponieważ są to nowe języki, można z nich wycisnąć przy odrobinie pomysłowości rzeczy, o jakich twórcom PHP się nawet nie śniło. Mogę podać co najmniej kilka przykładów problemów, które w OPT rozwiązuje się banalnie, a w PHP trzeba kombinować na potęgę, a i tak nie uzyska się podobnej prostoty. Powodem jest właśnie to, że mimo wszystko taki język to nie jest PHP (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 16.10.2025 - 00:03