Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]System szablonów, pomoc w napisaniu metody
Joachim Peters
post
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Właśnie próbuje napisać mały system szablonów.

Naskrobałem coś takiego:

  1. <?php
  2. class template {
  3. private $str;
  4. private $vars = array();
  5.  
  6. public function load( $file_name ) {
  7. if( $file_name ) {
  8. $this -> str = file_get_contents( $file_name );
  9. } else {
  10. throw new Exception('Brak nazwy pliku szablonu');
  11. }
  12. }
  13.  
  14. public function vars( $keys ) {
  15. foreach( $keys as $key => $value ) {
  16. $key = '{'.$key.'}';
  17. $this -> vars[$key] = $value;
  18. }
  19. }
  20.  
  21. public function display() {
  22. if (sizeof($this -> vars) > 0) {
  23. $keys = array_keys( $this -> vars );  
  24.  
  25. foreach ( $keys as $current_key ) {
  26. $this -> str = str_replace($current_key, $this -> vars[$current_key], $this -> str);
  27.  }
  28. }
  29.  
  30. echo( $this -> str ); 
  31. }
  32. }
  33. ?>


i działa to tak
  1. <?php
  2. try {
  3.  
  4. $tpl = new template;
  5.  
  6. $tpl->load('plik.tpl');
  7.  
  8. $tpl->vars(array(
  9. 'title' => 'Tak to ja',
  10. ));
  11.  
  12. $tpl->display();
  13.  
  14. } catch(Exception $e) {
  15. die( $e->getMessage() );
  16. }
  17. ?>


Jednak potrzebuje metody, która obsłuży dane w while().

Widzę to mniej więcej tak jak w phpBB, czyli
plik php
  1. <?php
  2. while( $row = cos tutaj ) {
  3. $tpl->loop_vars('news', array(
  4. 'title' => $row['title']
  5. ));
  6. }
  7. ?>


i html
  1. <!-- BEGIN news -->
  2. {news.title}
  3. <!-- END news -->


Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 20:20