Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

7 Stron V   1 2 3 > »   
Closed TopicStart new topic
> [klasa] Chameleon 1.9.1, Prosta ale szybka obsługa szablonów
Bastion
post 10.02.2006, 00:42:38
Post #1





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


Witam ponownie,

Biorąc pod uwagę opinie i zalecenia forumowiczów , powstała pierwsza stabilna i oficjalna wersja klasy Chameleon do obsługi szablonów. Na wstęp drobne porównanie z klasą Smarty.

Test symulujący całkowite przeładowanie strony z wykorzystanie cache dyskowego.
Smarty korzysta ze skompilowanych szablonów , Chameleon z mapy tagów :

Smarty : 500 iteracji (20 zmiennych) = 0.3475s
Smarty : 500 iteracji (10 zmiennych) = 0.3067s
Smarty : 500 iteracji (5 zmiennych) = 0.2965s
Chameleon : 500 iteracji (20 zmiennych) = 0.2336s
Chameleon : 500 iteracji (10 zmiennych) = 0.2095s
Chameleon : 500 iteracji (5 zmiennych) = 0.2105s

Kolejny test symulujacy kilkakrotne parsowanie szablonu podczas jednego wywolania strony, sytuacja ma miejsce gdy parsujemy kilkakrotnie ten sam szablon (np. formatka newsa) z zaladowana mapa tagow w pamieci. Oto wyniki :

Smarty : 500 powtórzeń (20 zmiennych) = 0.2462s
Chameleon : 500 powtórzeń (20 zmiennych) = 0.0981s

---------------- Co potrafi Chameleon :
# Cache tagow na dysku twardym
# Zmienne typu : {zmienna} {test}
# Zmienne tablicowe jednowymiarowe : {tablica[0]} {tablica[1]}
# Zagniezdzone IFy dowolnej glebokosci z obsluga negacji oraz ELSE (Narazie warunek sprawdzany jest logicznie tylko czy zmienna jest ustawiona)
# Petle szablonowe
# Podswietlanie blednych tagow
# Proste operacje matematyczne
----------------------------------------------------------

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. // Wczytsanie szablonu
  15. $tpl->load('example1.tpl');
  16.  
  17. // Dodanie zmiennej
  18. $tpl->setVar('title', 'Witaj przyjacielu');
  19.  
  20. // Wyswietlenie szablonu
  21. $tpl->display();
  22.  
  23. ?>

Przyklad 1 : Zmienne zwykle
Szablon : http://www.vertis.com.pl/chameleon/example...es/example1.tpl
Demo : http://www.vertis.com.pl/chameleon/example...es/example2.php

--

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. // Wczytsanie szablonu
  15. $tpl->load('example3.tpl');
  16.  
  17. // Dodanie zmiennej
  18. $tpl->setVar('title', 'Witaj przyjacielu');
  19.  
  20. // Zmienna tablicowa
  21. $tablica = array('0' => 'mama', '1' => 'tata');
  22. $tpl->setVar('rodzice', $tablica);
  23.  
  24. // Wyswietlenie szablonu
  25. $tpl->display();
  26.  
  27. ?>

Przyklad 3 : Zmienne tablicowe
Szablon : http://www.vertis.com.pl/chameleon/example...es/example3.tpl
Demo : http://www.vertis.com.pl/chameleon/example...es/example3.php

--

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. // Wczytsanie szablonu
  15. $tpl->load('example6.tpl');
  16.  
  17. // Dodanie zmiennej
  18. $tpl->setVar('title', 'Witaj przyjacielu');
  19. $tpl->setVar('zmiennaA', 10);
  20. $tpl->setVar('zmiennaC', true);
  21.  
  22. // Wyswietlenie szablonu
  23. $tpl->display();
  24.  
  25. ?>

Przyklad 6 : Warunki
Szablon : http://www.vertis.com.pl/chameleon/example...es/example6.tpl
Demo : http://www.vertis.com.pl/chameleon/example...es/example6.php

--

  1. <?php
  2.  
  3. require_once('../libs/class.chameleon.php');
  4.  
  5. $tpl = new Chameleon;
  6.  
  7. // Ustawienie sciezek dostepu do szablonow i cache mapy tagow
  8. $tpl->template_dir = './templates'; // default
  9. $tpl->tags_dir = './templates_tags'; // default
  10.  
  11. // Ustawienie czy przechowywac tagi
  12. $tpl->store_tags = true; // default
  13.  
  14. $newsy[0] = array ('topic' => 'Temat Pierwszy', 'content' => 'Tresc 1');
  15. $newsy[1] = array ('topic' => 'Temat Drugi', 'content' => 'Tresc 2');
  16. $newsy[2] = array ('topic' => 'Temat Trzeci', 'content' => 'Tresc 3');
  17. $newsy[3] = array ('topic' => 'Temat Czwarty', 'content' => 'Tresc 4');
  18.  
  19. // Wczytsanie szablonu
  20. $tpl->load('example7.tpl');
  21.  
  22. // Dodanie zmiennej
  23. $tpl->setVar('title', 'Witaj przyjacielu');
  24. $tpl->setVar('newsy', $newsy);
  25.  
  26. // Wyswietlenie szablonu
  27. $tpl->display();
  28.  
  29. ?>

Przyklad 7 : Petle w szablonie
Szablon : http://www.vertis.com.pl/chameleon/example...es/example7.tpl
Demo : http://www.vertis.com.pl/chameleon/example...es/example7.php

--

Klasę w wersji 1.0.0 można pobrać z http://www.vertis.com.pl/

Ten post edytował Bastion 18.06.2006, 22:58:47


--------------------
Go to the top of the page
+Quote Post
hwao
post 10.02.2006, 08:30:40
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




chciałbym jeszcze zobaczyc "skompilowany plik" smile.gif o ile takowy jest (czy to przed eval czy w cache).

Czy jest cos jak include?

ify?
Go to the top of the page
+Quote Post
Chewolf
post 10.02.2006, 09:45:37
Post #3





Grupa: Zarejestrowani
Postów: 335
Pomógł: 0
Dołączył: 15.11.2003

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


Cytat(hwao @ 2006-02-10 08:30:40)
ify?

ekhm ify to chyba warunki... więc kolega podał przykład wyżej
Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 10:20:02
Post #4





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


hwao : tu sa przechowane tagi (cache) : ags/' target='_blank

jesli chodzi o includy biggrin.gif wiedzialem ze czegos jeszcze brak biggrin.gif dorobie


--------------------
Go to the top of the page
+Quote Post
nospor
post 10.02.2006, 10:26:45
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hmmm, fajne smile.gif

Rzecz, która od razu rzuca mi się w oczy to kolorowanie zmiennych, których nie ma. W przypadku gdy szablon bedzie rozbudowany, duzo info na stronie bedzie, najzwyklej w swiecie ta informacja o niezdefiniowanych zmiennych umknie. Powinien byc jasny i wyraźny komunikat, że taka i taka zmienna nie istnieje, że taki a taki index tablicy jest nieokreślony. Tekst ten powinien sie wyswietlic albo zamiast zmiennej, albo gdzies na górze. Oczywiście mozna by ustawić, czy takie info ma sie wyswietlac. Np. wyswietlac tylko w trybie debug. (podczas tworzenia aplikacji)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 10:28:36
Post #6





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


nospor : Brdzo dobry pomysl. Znalazl sie juz u mnie na tapecie razem z includami smile.gif


--------------------
Go to the top of the page
+Quote Post
nospor
post 10.02.2006, 10:32:40
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hehe, żeby nie bylo, że to ja taki genialny. Tak jest wlasnie w smartym, którego uzyles do testow. Gdy brak zmiennej, to zamiast niej lecą warningi. Czegoś takiego nie da się nie zauwazyć winksmiley.jpg

ps: czasy co pokazales są bardzo obiecujące. Może wyjdzie z tego coś ciekawego smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 10:36:18
Post #8





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


smile.gif idac za ciosem moze dodac tez tryb SILENT, np gdy zmienna {VAR} nie bedzie zdefiniowana zostanie poprostu pominieta, albo dodac specjalny operator "cichych" zmiennych

np w przypadu gdy nie bedzie zmiennej

przy {VAR} wyswietli sie warning
a przy {?VAR} zostanie pominiety.

da to fajna mozliwosc gdy ktos np nie bedzie mial ustawionego Emaila to sie pyknie w szablonie {?EMAIL} zamiast

{@if(EMAIL)} {EMAIL} {@fi}

Ten post edytował Bastion 10.02.2006, 10:36:52


--------------------
Go to the top of the page
+Quote Post
nospor
post 10.02.2006, 10:46:00
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
da to fajna mozliwosc gdy ktos np nie bedzie mial ustawionego Emaila to sie pyknie w szablonie {?EMAIL} zamiast

{@if(EMAIL)} {EMAIL} {@fi}
Akurat do tego to zly przyklad dales. Bo taka sytuacja:
Kod
{@if(EMAIL)} Twoj email:{EMAIL} {@fi}

a jesli wlaczyc tryb silent:
Kod
Twoj email:{?EMAIL}
Przy braku ustawionej zmiennej email, tekst "Twoj email:" dalej bedzie sie wyswietlal winksmiley.jpg

W szablonach tryb silent do zmiennych jest zbedny. Te komunikatu o braku zmiennych są przydatne na etapie tworzenia aplikacji. Zazwyczaj dostaniesz go gdy zrobisz jakąs literowke lub cos w tym stylu. gdy juz aplikacja bedzie dzialala, to raczej same z siebie literowki w kodzie się nie będą pojawialy winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 10:49:32
Post #10





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


moze i racja smile.gif musze sie z tym przespac tongue.gif aarambo.gif


--------------------
Go to the top of the page
+Quote Post
Diablos
post 10.02.2006, 12:21:56
Post #11





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Bastion: zainteresuj sie jeszcze OPT i jego mozliwosciami: opt.openpb.net
Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 14:34:31
Post #12





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


tzn. czym dokladnie?


--------------------
Go to the top of the page
+Quote Post
bigZbig
post 10.02.2006, 15:08:19
Post #13





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Open Power Template


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 15:32:59
Post #14





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


BigZbig : znam juz ten adres - a pytalem na co konkretnie zwrocic uwage smile.gif


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post 10.02.2006, 15:46:52
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


co do trybu silent.. w smartym jest cos takiego jak modyfikator default. uzycie
Kod
{$sth|default:"asdas"}

jesli $sth jes tpuste to pokaze sie 'asdas'... moze to kogos zainspiruje smile.gif
Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 15:52:24
Post #16





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


smile.gif poszlo na tapete smile.gif cool.gif


--------------------
Go to the top of the page
+Quote Post
bigZbig
post 10.02.2006, 16:34:38
Post #17





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Cytat(Bastion @ 2006-02-10 16:32:59)
BigZbig : znam juz ten adres - a pytalem na co konkretnie zwrocic uwage smile.gif

Moze zwyczajnie zrobisz testy tak jak to uczyniles ze smarty.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Bastion
post 10.02.2006, 16:58:15
Post #18





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


@bigZbig

moze powiesz mi jak zmusic by OPT tylko parsowal zamiast wyswietlac wynik parsowania ?

  1. <?php
  2. function opt_tpl_1_1()
  3. {
  4. $tpl = new optClass;
  5. $tpl->root = './opt/templates/';
  6. $tpl->compile = './opt/templates_c/';
  7. $tpl->httpHeaders(OPT_HTML);
  8. $tpl->gzipCompression = 0;
  9. for ($i = 0; $i < 20; $i++)
  10. {
  11. $tpl->assign("var$i", 'blah');
  12. }
  13. $tpl->parse('template.tpl');
  14. }
  15.  
  16. ?>


--------------------
Go to the top of the page
+Quote Post
bigZbig
post 10.02.2006, 17:17:51
Post #19





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Nie znam mozliwosci OPT wiec Ci nie powiem, ale jesli sam je odkryjesz, albo uzyskasz taka informacje od autora to sie podziel. Tymczasem moze zrobilbys inny test polegajacy na wyswietleniu okreslonych porcji danych (przy uzyciu analogicznych szablonow). Pierwsze wyswietlenie i drugie - taki maly pomiar czasu. Zrob jakies w miare proste szablony bez zaawansowanej funkcjonalnosci. Chetnie sie zapoznam z wynikami takiego testu.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
ActivePlayer
post 10.02.2006, 17:17:59
Post #20





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


  1. <?php
  2. echo $tpl->fetch('template.tpl');
  3. ?>

smile.gif
Go to the top of the page
+Quote Post

7 Stron V   1 2 3 > » 
Closed 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: 12.06.2025 - 15:03