Пример


Простой пример намного интереснее и познавательнее, чем многие слова

Ваш шаблон всегда будет синтаксически правильным xml/html документом (с присутствующим корневым элементом)! Вот пример файла под названием 'my_template_file.xhtml'.

<?xml version="1.0"?>
<html>
  <head>
    <title tal:content="title">
      Место для заголовка страницы
    </title>
  </head>
  <body>
    <h1 tal:content="title">Пример заголовка</h1>
    <table>
      <thead>
        <tr>
          <th>Имя</th>
          <th>Телефон</th>
        </tr>
      </thead>
      <tbody>
        <tr tal:repeat="person people">
          <td tal:content="person/name">Чье-то имя</td>
          <td tal:content="person/phone">Чей-то телефон</td>
        </tr>
        <tr tal:replace="">
          <td>Олег Радченко</td>
          <td>5226611</td>
        </tr>
        <tr tal:replace="">
          <td>Олег Радченко</td>
          <td>5226611</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Все, что Вам понадобиться сделать в php - это включить (include) библиотеку PHPTAL и, возможно, установить несколько переменных, чтобы настроить шаблонную систему.

<?php
require_once 'PHPTAL.php';

// создать обработчик шаблонов
$template = new PHPTAL('my_template_file.xhtml');

// класс Person
class Person {
    public $name;
    public $phone;

    function Person($name, $phone) {
        $this->name = $name;
        $this->phone = $phone;
    }
}

// Создаем массив объектов для тестирования
$people = array();
$people[] = new Person("foo", "01-344-121-021");
$people[] = new Person("bar", "05-999-165-541");
$people[] = new Person("baz", "01-389-321-024");
$people[] = new Person("quz", "05-321-378-654");

// Передаем массив данных обработчику шаблонов
$template->title = 'Я Заголовок';
$template->people = $people;

// Выполняем обработку шаблона
try {
    echo $template->execute();
}
catch (Exception $e){
    echo $e;
}
?>

Выполнив такой PHP скрипт, Вы получите что-то вроде этого:

<?xml version="1.0"?>
<html>
  <head>
    <title>Я Заголовок</title>
  </head>
  <body>
    <h1>Я Заголовок</h1>
    <table>
      <thead>
        <tr>
          <th>Имя</th>
          <th>Телефон</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>foo</td>
          <td>01-344-121-021</td>
        </tr><tr> <td>bar</td>
          <td>05-999-165-541</td>
        </tr><tr> <td>baz</td>
          <td>01-389-321-024</td>
        </tr><tr> <td>quz</td>
          <td>05-321-378-654</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

PHPTAL не заботится о переносах строки и отступах ни в читаемых, ни в генерируемых файлах. Чтобы получить красивый HTML (с переносами и правильными отступами), можно использовать HTML Tidy на этапе постпроцессинга.