$param = implode(',', $args);
        $this->_element->{$name}($param);
    }
}
class Template3 extends HtmlTemplate
{
    protected $_element;
    public function __construct($ele, $html)
    {
        $this->_element = $ele;
        $this->_html = $html;
        $this->set('<ul>' . $this->_html . '</ul>');
    }
    public function __call($name, $args)
    {
        $param = implode(',', $args);
        $this->_element->{$name}($param);
    }
}
$tpl1 = new Template1();
$tpl1->render();
$tpl1->set('Hello Decorator!');
$tpl1->render();
$tpl2 = new Template2($tpl1, 'Hello TPL 2');
$tpl2->render();
$tpl2->set('Hello TPL 2 agian');
$tpl2->render();
$tpl2 = new Template3($tpl1, 'Hello TPL 3');
$tpl2->render();
$tpl2->set('Hello TPL 3 agian');
$tpl2->render();