template

  1. class template {
  2.     private static $template = '';                                                  // Главный шаблон
  3.     private static $blocks = array();                                               // Блоки
  4.     private static $data = array();                                                 // Данные для главного шаблона
  5.     private static $errors = array();                                               // Различные ошибки
  6.  
  7.     /**
  8.     * Function:      get_template()
  9.     * Description:   Получение шаблона
  10.     * Parameters:    $template (string) Шаблон
  11.     */
  12.  
  13.     public static function get_template($template) {
  14.         if (file_exists($template)) {
  15.             self::$template = $template;
  16.         } else die ($template . ' is not exists');
  17.     }
  18.  
  19.     /**
  20.     * Function:      get_blocks()
  21.     * Description:   Получение блоков для шаблона
  22.     * Parameters:    $blocks (array) Блоки
  23.     */
  24.  
  25.     public static function get_blocks($blocks = array()) {
  26.         $total = count($blocks);
  27.         if ($total > 0) {
  28.             for ($i = 0; $i < $total; $i++) {
  29.                 if (file_exists($blocks[$i])) {
  30.                     self::$blocks[] = file_get_contents($blocks[$i]);
  31.                 } else {
  32.                     self::$errors[] = 'Block "' . $blocks[$i] . '" is not exists';
  33.                 }
  34.             }
  35.         }
  36.     }
  37.  
  38.     /**
  39.     * Function:      set_blocks()
  40.     * Description:   Вставка блоков в главный шаблон
  41.     * Parameters:    $data (array) Данные необходимые для блоков
  42.     */
  43.  
  44.     public static function set_blocks($data = array())
  45.     {
  46.         $total = count($data);
  47.         if ($total > 0) {
  48.             for ($i = 0; $i < $total; $i++) {
  49.               ob_start();
  50.               extract($data[$i], EXTR_REFS);
  51.               eval(' ?>'. self::$blocks[$i] .'<?php ');
  52.              self::$data[] = ob_get_contents();
  53.              ob_end_clean();
  54.            }
  55.        }
  56.    }
  57.  
  58.    /**
  59.    * Function:      parse_template()
  60.    * Description:   Обработка шаблона
  61.    * Return values: $content (string)
  62.    */
  63.  
  64.     public static function parse_template()
  65.    {
  66.         extract(self::$data, EXTR_PREFIX_ALL, 'tpl');
  67.         ob_start();
  68.        require (self::$template);
  69.         $content = ob_get_clean();
  70.         return $content;
  71.     }
  72.  
  73.    /**
  74.    * Function: display()
  75.    * Description: Вывод содержимого на экран
  76.    */
  77.  
  78.    public static function display() {
  79.        echo self::parse_template();
  80.    }
  81.  
  82.    /**
  83.    * Function: display_errors()
  84.    * Description: Сообщения об ошибках
  85.    */
  86.  
  87.    public static function display_errors() {
  88.        if (!empty(self::$errors))
  89.         echo '<p>' . (is_array(self::$errors) ? implode('<br />', self::$errors) : self::$errors) . '</p>';
  90.    }
  91. }
Пример использования
  1. template::get_template('view/module1/module1.tpl');
  2. template::get_blocks(array('tet', 'view/module1/block.tpl', 'view/module1/block2.tpl'));
  3. template::set_blocks(array(
  4.   array('var' => 'this is var of block.tpl'),
  5.   array('var' => 'this is var of block2.tpl')
  6. )
  7. );
  8. template::display_errors();
  9. template::display();
Содержимое шаблонов:
module1.tpl
  1. <h3>Module 1</h3>
  2. <p>This is example of working with template class</p>
  3. <?php echo $tpl_1 . $tpl_0; ?>
  4. <div>End of main template of module 1</div>
block.tpl
  1. <h1>This is block.tpl</h1>
  2. <?php echo $var; ?>
block2.tpl
  1. <h1>This is block2.tpl</h1>
  2. <?php echo $var; ?>

Результат http://upwap.ru/1898811

Реклама

Мы в соцсетях

tw tg yt gt