[PHP] Szybki system szablonów

0

Zacząłem oddzielanie wyglądu (HTML/CSS) od logiki (PHP/SQL). Problem stanowi jednak sama obsługa szablonów. Zacząłem na razie od metody nr 1, lecz myślę o lepszych rozwiązaniach.

1. Wstawki PHP
Zazwyczaj kod jest czytelny. Gorzej w przypadku iteracji, bo trzeba definiować w skórce funkcję lub użyć w niej pętli. Zaletą jest możliwość użycia kodu PHP (albo wadą dla niedoświadczonych).

2. File_get_contents() i str_replace()
Metoda również szybka. Występują zmienne typu {title}, {date}, itp. Nie można raczej mówić o definiowaniu bloków danych. Za to równie dobrze da się oddzielać fragmenty, np. ---BREAK---.

3. System szablonów
Systemy szablonów typu Smarty lub OPT raczej odpadają. Atutem CMS-a jest niewielki rozmiar plików (zarówno ładowanych do pamięci przy każdym żądaniu). Mogę jednak napisać własny system (lepsze rozwiązanie) bądź zmodyfikować istniejący do potrzeb CMS-a.

4. Kompilowanie do PHP w administracji
Tego chyba nie trzeba tłumaczyć - kompilowanie skórek do PHP na żądanie użytkownika w panelu administracyjnym. Zalety - kompilowanie skórek AutoTheme i innych systemów?

Najlepszym wyjściem jest coś podobnego do:

<tr>
  <td>{lang:title}</td>
  <td>{title}</td>
</tr>
<!--START ocena -->
<tr>
  <td>{lang:ocena}</td>
  <td>{ocena}</td>
</tr>
<!--END ocena -->

W tym przypadku rozwiązanie nr 2 odpada - str_replace() nie starczy. Kolejny problem to iteracja fragmentu kodu.

Przyjmując, że szablony są kompilowane do PHP, problem iteracji pozostaje nadal. W PHP dane z bazy odczytuję przy pomocy PDO i funkcji FOREACH:

foreach($obiekt_result as $tablica) { ... }

Innym rozwiązaniem jest funkcja:function X(argumenty?) { global ...? ...}

Jakie jest wasze zdanie na ten temat?
0

Mi starcza takie cos: http://pastebin.4programmers.net/2891

0

Siema,

gdy czytam twojego posta zastanawiam sie czy ty pytasz czy udzielasz wskazówek innym...

Czemu na siłe nie chcesz użyć gotowca ?
Fakt... rozmiar SMARTY może przerazić ( ~300 kb )
Nieco lepiej z OPT ( ~150 kb )
no a sprawdzałeś XT ? Biblioteka zajmuje niecałe 50 kb... to nie tak dużo.

poza tym - po co pisać takie coś - {lang:tytul} - ?? Przecież wszystko da sie w php zrobić a w szablonach masz tylko {tytul} ...

Ja w moim CMS'ie zrobiłem tak że mam sposób 2, 1 - dzięki temu powsał mi sposób 3 - a w panelu administracyjnym mam opcjonalnie punkt 4 - aby można bylo wszystko kompilować poza standardowym czasem mojego cache.

0

a ta Coyotowa? Lekka dość, nawet szybka i wystarczająca.

0

Przejżyj kody źródłowe "poważnych" CMSów typu Joomla. To są sprawdzone i na pewno dobrze przemyslane rozwiązania. W moim CMSie używam metod podobnych do joomla i jestem zadowolony :-)

0

Nie miałem co prawda do czynienia z wielkimi systemami, ale ze sporymi (na oko przeciętnie 20 nowych wyszukań/sekundę, nie licząc innych odświeżeń strony, przeglądań itp) - owszem... Z tego, co ja się nauczyłem, poradzę i Tobie - odpuść sobie maksymalne optymalizowanie autostrad informacyjnych, a skup się na wąskich gardłach :).

Jeżeli takim wąskim gardłem jest (lub uważasz, że jest) Smarty - bądź co bądź IMHO szybkie no i (chyba?) nawet lekkie, bo przeca nie ładuje do pamięci całych 300kB - to źle to tylko świadczy o administratorze stworzonej przez Ciebie aplikacji, czytaj: niech po prostu wykupi lepszy serwer - polecam Progreso

edit: do ostatniego zdania - nie zrozum mnie źle - z g*** bata nie ukręcisz ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1