Witam,
jestem początkującym webmasterem lecz wcześniej troche zajmowałem się troche C++ więc prosze o nie wyśmiewanie mnie smile.gif Otóż napisałem klase szablonów i chciałbym dowiedzieć się czy jest dobrze napisana , czy ma jakieś błędy lub czy można by do niej coś dodać haha.gif oto kod : Klik (PHP 5)

2 pierwsze zmienne to kotalog z szablonami oraz pamięć podręczna (ten folder musi mieć ustawionego chmoda na zezwolenie do zapisu i odczytu)!

{$zmienna} - wyświetla zmienną $zmienna
{-global-$zmienna} - zmienia zmienną na globalną i wyświetla ją
{GLOBAL $zmienna} - Zmienia zmienną na zmienną globalną
{foreach $var1 as $var1} {/foreach} - pętla foreach
{for $i = 1; $i <= 10; $i++} {/for} - pętla for
{include plik} - Include
{include_once plik} - Include
{require plik} - require
{require_once plik} - require_once


instrukcje warunkowe :
{if warunek}
warunek jest spełniony
{else if warunek2}
warunek2 jest spełniony
{else}
jeśli żadne warunki nie są spełnione haha.gif
{/if}


opis funkcji obiektu :
unite( template1 , template2 , nazwa_nowego_templata , bool(1-usuń template1 i 2 ; 0-nie usuwaj; domyślnie 1) ) - połączenie 2 templatów w jeden
destroy( template ) - usuń templata
rename( staranazwa , nowanazwa , bool(1-skopiuj; 0-przenieś; domyślnie 0) )
assign( zmien , na , template ) - zmienia w treści templata 1-szy argument podany w funkcji na 2-gi
assign_array( array , template ) - zmienia w treści templata klucz tablicy podany w funkcji na jej argument
display( template , boll(1-funkcja zwraca wynik (return); 0 - return nie zwraca zadnej wartości ) )
new_file( template , boll(1-return zwraca treść templata(nie skompilowaną) ; 0-nic nie zwraca; ) , $dir(domyślnie false) ) - tworzy nowy template o nazwie takiej jak pierwszy argument funkcji , z katalogu ostatni_argument/nazwa_templata.tpl (jeśli ostatni argument zostal podany) lub $this->TemplateDir/nazwa_templata.tpl

pparse (prywatna)
loadfile(prywatna)
NameByHandle(prywatna)

Demo :
  1. <?php
  2. function getmicrotime(){
  3. list($usec, $sec) = explode(" ",microtime());
  4. return ((float)$usec + (float)$sec);
  5. } 
  6. $start = getmicrotime(); 
  7.  
  8.  $a = 1;
  9.  $b = 2;
  10.  $test = "Jakiś tekst!"; 
  11. require("templates.class.php");
  12.  
  13. $tpl = new template; // new Object 
  14.  $tpl -> TemplatesDir = "./templates/";
  15.  $tpl -> new_file("index" );
  16.  $tpl -> assign( "imie" , "Stefan!" , "index" );
  17.  $tpl -> display("index"); // return template
  18. $koniec = getmicrotime();
  19. echo "<BR /><BR /><BR />Skrypt wykonał się w ".round($koniec-$start, 5)." sekund."; 
  20. ?>


templates/index.tpl

Cytat
Test pętli FOR :<BR />
{for $i = 1; $i <= 10; $i++}
{$i}
{/for}

<BR />
<BR />
zmienna $var : {-global-$test}<BR /><BR />
Nazywam się {imie}!
<BR /><BR />
includujemy plik test.php : {include test.php}
<BR /><BR />
Zmieniamy zmienną a na globalną {GLOBAL $a}<BR />
Zmieniamy zmienną b na globalną {GLOBAL $b}<BR />
a : {$a}<BR />
b : {$b}<BR /><BR />
test if`a :
<BR /><BR />
{if $a==1 && $b==2}
$a = 1 i $b = 2<BR />
{else}
$a jest różne od 1 lub/i $b jest różne od 2
{ /if }