Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]eval do szablonów - czy dobry pomysł?
Evinek
post
Post #1





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Przeglądałem różne skrypty for w poszukiwaniu dobrych rozwiązań. Padło na eval() z MyBB.
Zrobiłem taki kod:

#template.php (proszę nie krytykować, że to nie nadaje się na OOP ponieważ później tą klasę będę rozwijał)
  1. <?php
  2. class template{
  3. function parse($file){
  4. return file_get_contents('./html/'.$file.'.php');
  5. }
  6. }
  7. ?>

#index.php
  1. <?php
  2. include('./template.php');
  3. $template = new template;
  4. eval("\$test = \"".$template->parse('index')."\";");
  5. echo $test;
  6. ?>


Czy takie rozwiązanie jest pod względem optymalności i bezpieczeństwa dobre?
Jeśli są jakieś zagrożenia to jakie?

Jak testowałem 51 szablonów w jednym skrypcie, szablony:
  1. Test: {$ttt}<br />
  2. <ul>
  3. {$linki}
  4. </ul>
Użyte jeden raz
  1. <li>$links</li>
Użyte 50 razy

, to czas na localhost (z pendrive) dawał: około 0.05s.
a na ugu: 0.0009s.

Przy większych plikach pewnie czas się zwiększy dlatego pytam was w tej sprawie.
Pewnie będę musiał też cachować te szablony, tylko pytanie jak?
Np. szablon header będzie posiadał zmienną {$login} więc tak czy siak będzie musiało przejść przez eval. Macie na to rady?


Z góry dziękuje i pozdrawiam, Paweł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


@Mephistofeles - twig korzysta z evala, ale tylko w sytuacji kiedy nie korzysta się z cache: https://github.com/fabpot/Twig/blob/master/...onment.php#L327 fakt jest to złe, ale jego użycie, czasami jest uzasadnione, bo inaczej danego zadania nie da się zrealizować. Próbowałem kiedyś jakoś to obejść, i nie użyć evala, ale zwyczajnie się nie da, oczywiście mówię o sytuacji kiedy tego cache nie ma.

Cytat
Dla kogoś, kto babrze się w HTMLu nie ma większego znaczenia język szablonu, byle HTML był oddzielony.

Dokładnie tak! Niektórzy uważają że to jest dla frontendowca łatwiejsze do zapamiętania, zrozumienia ITP, a jest to tak na prawdę gówno prawda (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 19:32