Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa]Prosty system szablonow (PHP4/5)
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
mokry
Witam,
Dzisiaj postanowilem do potrzeb wlasnych napisac mala klase do obslugi szablonow...
Klasa jest baaardzo prosta w sam raz dla malych i srednich stron www.
Dziala zarowno w PHP4 jak i PHP5.
Jest to moja pierwsza klasa, dlatego udokumentowanie nie jest dobre, nawet go zabardzo nie ma jak na razie winksmiley.jpg
Co do mozliwosci klasy... Zadnych ifow, catchow czy dodatkowych bajerkow...
Klase prawdopodobnie bede rozwijal pozniej, jednak jak na razie to mi wystarcza i zadnych wiekszych zmian nie przewiduje...

Klasa:
  1. <?php
  2.  
  3. class NowySzablon {
  4.  
  5. var $toChange;
  6. var $str;
  7.  
  8. function Template()
  9. {
  10. $this -> toChange = array();
  11. $this -> str = '';
  12. }
  13.  
  14. function setTemplate($ATemplate)
  15. {  
  16. $this -> str = $ATemplate;
  17. }  
  18.  
  19. function Szablon($AFileName)
  20. {  
  21. $this -> str = file_get_contents($AFileName);
  22. }  
  23.  
  24. function zmienna($AKey, $AValue)
  25. {  
  26. $AKey = '{'.$AKey.'}'; //mozna usunac, jesli wolisz bez obslugi znakow { }
  27. $this -> toChange[$AKey] = $AValue;
  28. }
  29.  
  30. function Parsuj()
  31. {  
  32. if (count($this -> toChange) > 0) {
  33. $tmpKeys = array_keys($this -> toChange);  
  34.  
  35. foreach ($tmpKeys as $currentKey) {
  36. $this -> str = str_replace($currentKey, 
  37.  $this -> toChange[$currentKey],
  38.  $this -> str);
  39. }
  40. }
  41. return $this -> str;  
  42. }
  43.  
  44. }
  45.  
  46. ?>


Sposob uzycia:
  1. <?php
  2. $st = new NowySzablon; //Definiujemy nowy Szablon
  3. $st -> Szablon('szablon.tpl'); //Sciezka do pliku z szablonem
  4. $st -> zmienna('tytul', 'Przykladowy tytul...'); //Definiowanie zmiennej szablonowej, w zaleznosci od zmiennej $AKey = '{'.$AKey.'}' - jesli zostawisz to wstawiasz bez { } jesli wymazesz zmienna, musisz dodawac {} 
    przy definiowaniu zmiennych szablonowych
  5. echo $st -> Parsuj(); //Sparsowanie szablonu do wyswietlenia tresci
  6. // ewentualnie:
  7. // $zmienna = $st -> executeChanges();
  8. ?>


Jak widac, przy definiowaniu zmiennych szablonowych trzeba rowniez dodawac znaki zmiennych "{}". Dlaczego?
Z zalozenia chcialem aby mozna bylo sparsowac jeden plik szablonu kilka razy przez np dwukrotne uzycie klasy... I tak w jednym dajemy sobie zmienne pomiedzy {} a potem np. pomiedzy ###zmienna###.
Adrian Staniszewski
Odnosnie twojego pomyslu z tymi {} i ######... to po prostu dodaj jakas zmienna w ktorej bedziesz trzymal znak poczatku i konca wyrazenia.. szybciej, latwiej, przyjemniej winksmiley.jpg
mokry
Okey, ale moze sie zdarzyc sytuacja, ze jeden plik szablonu parsujemy dwa razy na strone... W tym momencie mozemy albo dodac pomiedzy {} jakis prefix, albo calkowicie zmienic postac zmiennej szablonowej... Osobiscie wole wybrac druga wersje ze wzgledu na lepsza przejrzystosc pliku szablonu (przynajmniej mi sie lepiej zarzadza takim szablonem winksmiley.jpg
Adrian Staniszewski
Widać ze nie zrozumiales mnie.. szablon pozostaje bez zmian, zmienia sie tylko to ze nie musisz podawac znakow {} przy deklarowaniu zmiennych. Po co uzywac zbednych znakow, marnowac czas przy pisaniu jak mozna dac np. setZnak('{', '}');
mokry
Okey, w takim razie zmienilem.
Jest po Twojemu winksmiley.jpg
Adrian Staniszewski
Ale teraz twoje klasa nie spelnia kryteriow jakie miala.. ;] ehh..
pikey
a jezeli tam gdzie mam "{tytul}" chciał zrobic include jakiegos pliku to jak?
PiratNowegoPokolenia
dodaj jeszcze podstawową obsługę bloków i będzie loozik smile.gif
Ociu
To jak będziesz rozwijał, to dodaj obsługę instrukcji warunkowych smile.gif
MajareQ
i obsługę java haha.gif
Moli
@MajareQ - Po co tak odkopujesz te stare tematy :/ Daj sobie spokój z tym i pisz w aktualnie prowadzonych.
mike
~MajareQ j.w. a dodatkowo pisz na temat. Co tu robi wpis o Java? Jak to ma się do prowadzonego wątku?
Zaliczam tego posta jako nabijanie
MajareQ
Drogi Mike, kpisz sobie? tongue.gif

Cytat(Ociu @ 23.11.2006, 12:51:10 ) *
To jak będziesz rozwijał, to dodaj obsługę instrukcji warunkowych smile.gif


Cytat(MajareQ @ 4.02.2008, 00:13:11 ) *
i obsługę java haha.gif


Teraz już kojarzysz...?
mike
Taaaa, głupia emotikona mówi wszystko....
Tylko widzisz, obsługę instrukcji warunkowych ma każdy system szablonów jaki znam i nie ma w tym nic dziwnego więc do czego nawiązujesz komentarzem z Javą? Jeszcze pewnie myląc ją z JavaScriptem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.