![]() |
![]() |
![]()
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ł)
#index.php
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: Użyte jeden raz 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ł. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Zły. Eval to zło samo w sobie.
Dlaczego nie użyjesz gotowego silnika, np. Twiga? |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 280 Pomógł: 46 Dołączył: 23.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Po prostu nie chce następnego języka w CMSie. Chce prostote. Masz inne rady jak zrobić taki system szablonów?
Wystarczy mi aby były zmienne w szablonie. Potrzebuje właśnie coś ala MyBB. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Użyj Twiga. Skoro potrzebujesz tylko zmiennych, to nie ma problemu, nowej składni nie będzie zbyt wiele: {{ zmienna }}.
Można oczywiście bawić się np. z preg_replace, ale po co wynajdywać koło na nowo? Kiedyś stwierdzisz, że przyda się jeszcze np. pętla, i będzie trzeba znowu dopisywać, a w gotowym silniku masz to gotowe. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Chce prostote. Masz inne rady jak zrobić taki system szablonów? Ja mam. Używa się systemu znanego lub prostego - zamiast tworzyć własny pseudo-język lepiej użyć coś znanego (np. SMARTY), albo po prostu via PHP (prostota): Dla kogoś, kto babrze się w HTMLu nie ma większego znaczenia język szablonu, byle HTML był oddzielony. |
|
|
![]()
Post
#6
|
|
![]() 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 ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Wiem, że eval czasami jest nieunikniony, ale jednak zastosowanie evala w gotowych systemach jest nieco inne, niż proponuje to autor tematu. Tam jest wykorzystywany do wykonania skompilowanego kodu szablonu, więc niewiele się to różni od wykonania zapisanego pliku.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 280 Pomógł: 46 Dołączył: 23.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
No to już nie wiem jak to zrobić.
Chce robić coś takiego:
Zależy mi na tym aby wszystkie zmienne mógłbym używać w szablonie. Czyli replace odpada bo jak będzie tablica to za dużo zabawy. Wolałbym swój kod który mógłbym łatwo edytować. Chce własne klasy tylko do swoich projektów. Jeśli coś będę robił komercyjnego to nie będę się bawił w tworzenie własnego kodu tylko będę brał gotowce. Ważne jest abym mógł właśnie z szablonu tworzyć takie linki po czym dodawać je do szablonu innego (połączyć to) po czym w końcu ten cały szablon dać do głównego szablonu (przykład powyżej). Chce ominąć rzeczy w stylu: $links .= '<a href="...">...</a>'; ponieważ chce maksymalnie oddzielić HTML od PHP. Co mi możecie polecić? Szukam na ten temat już z ponad dwa miesiące. Wiele stron przeszukałem i nadal nic. Ten post edytował Evinek 24.06.2012, 16:54:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:32 |